我下载并按照MySQL 5.5.8(http://dev.mysql.com/downloads/mysql/)和MySQLdb python插件的安装说明进行操作.(http://sourceforge.net/projects/mysql-python/)
当我尝试将MySQLdb导入python终端时,我收到以下错误:
Safira:~ yanigisawa$ python --version
Python 2.6.1
Safira:~ yanigisawa$ python -c "import MySQLdb"
Traceback (most recent call last):?
File "<string>", line 1, in <module>
File "build/bdist.macosx-10.6-universal/egg/MySQLdb/__init__.py", line 19, in <module>
File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 7, in <module>
File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/yanigisawa/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.16.dylib
Referenced from: /Users/yanigisawa/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so
Reason: image not found
Safira:~ yanigisawa$
Run Code Online (Sandbox Code Playgroud)
我发现有关堆栈溢出的问题4559699,并按照那里的说明进行操作:
Safira:~ yanigisawa$ echo $DYLD_LIBRARY_PATH
/usr/local/mysql/lib
Safira:~ yanigisawa$ ls -l /usr/local/mysql/lib
total 363224 …Run Code Online (Sandbox Code Playgroud) 在根据用户输入过滤我的NSMutableDictionary时,我创建了以下代码:
NSString *predicateString = [NSString stringWithFormat:@"SELF beginsWith[cd] %@", searchString];
NSPredicate *pred = [NSPredicate predicateWithFormat:predicateString];
NSArray *filteredKeys = [[myMutableDictionary allKeys] filteredArrayUsingPredicate:pred];
Run Code Online (Sandbox Code Playgroud)
使用此定义将"searchString"传递给方法:
(NSString*) searchString
Run Code Online (Sandbox Code Playgroud)
然而,这导致以下异常:
... raise [valueForUndefinedKey:]:此类不是密钥值编码兼容的密钥...
修复原来是:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF beginsWith[cd] %@", searchString];
NSArray *filteredKeys = [[myMutableDictionary allKeys] filteredArrayUsingPredicate:pred];
Run Code Online (Sandbox Code Playgroud)
我不明白的是,为什么后者有效,前者抛出异常.我已经阅读了一些关于键值编码的内容,但我不明白它在这里是如何应用的.(即仅通过改变NSPredicate的定义方式)有人可以启发我吗?
更新: 为了回应jtbandes的评论,我继续创建了一个TestApp项目来演示这个问题.http://dl.dropbox.com/u/401317/TestApp1.tar.gz
我正在使用QLPreviewController来快速显示大约200 KB的PDF文件,其中包含多个页面.我的问题是,即使使用QLPreviewController渲染PDF,显示PDF的实际内容仍有5-10秒的延迟.(这些秒显示空白的白色屏幕)
是否有一个事件/挂钩我可以连线,以便我可以显示一个加载对话框,直到完整的PDF预览呈现?(即在视图首次加载时显示加载对话框,然后在一个subViewDidLoad或等效的上隐藏加载对话框)
注意:我使用的是iOS 4.3.
编辑2013年5月23日: iOS的更高版本改进了此控件,默认情况下每个页面都显示一个加载图标.因此,我没有必要挂钩任何事件来显示我自己的加载图标.
我正在编写单元测试(技术上是集成测试,因为我连接到数据库)并且我想在测试中的事务中创建记录,并在测试完成后回滚所有数据库修改.我的想法是,我将通过另一个API调用期望在数据库中找到的一个API调用来创建记录.
我有以下代码:
string connectionstring = "Server=MyDbServer;Database=MySchema;Uid=MyUser;Pwd=XXX;";
string sql = "Insert Into MyTable (date, Description) VALUES('2009-12-11', 'foo test description');";
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
using (MySqlConnection conn = new MySqlConnection(connectionstring))
{
conn.Open();
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
{
cmd.ExecuteNonQuery();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我将TransactionScope实例移动到MySqlCommand之前,则事务不会回滚,并且我的测试数据将持久保存到数据库:
string connectionstring = "Server=MyDbServer;Database=MySchema;Uid=MyUser;Pwd=XXX;";
string sql = "Insert Into MyTable (date, Description) VALUES('2009-12-11', 'foo test description');";
using (MySqlConnection conn = new MySqlConnection(connectionstring))
{
conn.Open();
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
using (MySqlCommand cmd = new MySqlCommand(sql, …Run Code Online (Sandbox Code Playgroud)