我一直在研究一个问题几个小时,并会对任何外部投入表示感谢。我是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:update ListItem set status = 0,message =“”,GPSLong = 44.48916,GPSLat = 6.28739,lastUpdated = DateTime('now')其中userID = 1 * < /强>
有人能看到这段代码是如何挂断的吗?
看起来问题是Xcode内存泄漏。经过几个小时的冲击,我的头再次撞墙,关闭并再次启动它解决了这个问题。
答案 0 :(得分:1)
您确定另一个进程/线程没有针对数据库打开事务吗?这会导致这种行为。