我已经研究了几个小时的问题,并感谢任何外界的投入。我是iOS,Objective-C和SQLite的新手,正在尝试执行SQLite Update语句。问题是UI冻结,并且似乎挂在SQLite中的进程中。
这是代码:
NSString *docsPath = [paths objectAtIndex:0];
NSString *path = [docsPath stringByAppendingPathComponent:@"SQLite3Database.sqlite"];
SQLite3_instance *db = [SQLite3_instance databaseWithPath:path];
[db open];
NSString *execUpdate = [NSString stringWithFormat:@"update ListItem set status=%i,message=\"%@\",GPSLong=%@, GPSLat=%@,lastUpdated=DateTime('now') where userID = %@",[Status_Picker selectedRowInComponent:0],messageTextField.text , longitude, latitude,loggedinUserID];
NSLog(@"execUpdate: %@", execUpdate);
if (![db executeUpdate:execUpdate])
NSLog(@"Data insert failed %@", db.lastErrorMessage);
单击UIButton后,此代码在IBAction中执行,但是如前所述,UI挂在进程中。上面代码的输出如下:
* execUpdate:更新ListItem设置状态= 0,message =“”,GPSLong = 44.48916,GPSLat = 6.28739,lastUpdated = DateTime('now'),其中userID = 1 *
谁能看到此代码的挂起方式?
看起来问题出在Xcode内存泄漏。经过数小时的重击,我的头再次碰到墙,关闭并重新启动,解决了该问题。
最佳答案
您确定另一个进程/线程没有针对数据库打开事务吗?这将导致此行为。