我手上有一个难题。
我在 xcode 中对我的 SQLite 数据库执行NSFetchRequest,我正在运行的查询非常简单:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];
[[context undoManager] disableUndoRegistration];
NSError *error = nil;
NSEntityDescription *entity = nil;
entity = [NSEntityDescription entityForName:@"Workbook" inManagedObjectContext:context];
[request setEntity:entity];
[request setPredicate:[NSPredicate predicateWithFormat:@"language == 'English'" ]];
[request setSortDescriptors:[NSArray arrayWithObject:[[NSSortDescriptor alloc]initWithKey:@"sequence" ascending:YES]]];
NSLog(@"----- Request Print out: %@",request);
NSArray *subjects = [context executeFetchRequest:request error:&error];
此代码第一次工作时执行良好。
然后我更改我的视图并在应用程序的不同部分执行另一个提取和插入导航回托管此代码的视图,然后代码无法执行:
[context executeFetchRequest:request error:&error];
该应用程序不会冻结或崩溃,并且控制台上不会显示任何错误消息。我什至为我的 sql db 提取启用了日志记录,我可以看到请求的 sql 从未第二次执行。
记录时的获取请求如下所示:
<NSFetchRequest: 0x20063120> (entity: Workbook; predicate: (language == "English"); sortDescriptors: (("(sequence, ascending, compare:)")); type: NSManagedObjectResultType; )
这与代码第一次执行和第二次执行时相同,因此请求本身不会成为问题。
在之前的操作之后,我的数据库是否有可能被锁定?
应用程序是否会失去与数据库的连接,因为数据库没有收到请求?
我已经离开了应用程序,看看是否有任何事情发生,但它只是无限期地坐着......
我已经尝试了所有我能想到的分析等,但找不到任何明显的东西,比如泄漏或发生奇怪的过程。
所有帮助表示赞赏