我正在使用以下代码从SQLite存储中获取一些对象(这是一个准备好的SQLite数据库文件,使用桌面上的Core Data生成):
NSFetchRequest * request = [[NSFetchRequest alloc] init];
[request setEntity: wordEntityDescription];
[request setPredicate: [NSPredicate predicateWithFormat: @"word = %@", searchText]];
NSError * error = [[NSError alloc] init];
NSArray * results = [[dao managedObjectContext] executeFetchRequest: request error: &error];
Eveyrthing似乎设置正确,但是executeFetchRequest:error:在Core Data(在NSSQLCore _newRowsForFetchPlan:selectedBy:withArgument)内部深度失败,对外部代码产生256错误。
我设置managedObjectContext的唯一问题是我必须为addPersistentStoreWithType指定NSIgnorePersistentStoreVersioningOption选项,因为它经常产生134100错误(是的,我确定我的模型完全相同:我重新使用了项目中的模型这产生了SQL文件。)
有什么想法吗?
P.S。不介意代码风格,它只是一个便笺簿。当然,您可以随意申请任何其他信息。如果有人可以提供帮助,那将是非常好的。
更新1 Alex Reynolds,感谢愿意帮忙:) 代码(希望这是你想看到的):
NSEntityDescription * wordEntityDescription; //that's the declaration (Captain Obviousity :)
wordEntityDescription = [NSEntityDescription entityForName: @"Word" inManagedObjectContext: ctx];
至于谓词 - 没关系。我完全删除了谓词(只是抓住所有记录),这没有任何区别。
同样,相同的代码在桌面应用程序中运行得很好,这让我发疯(当然,我需要添加一些内存管理的东西,但它至少应该产生几乎相同的行为,不应该?)
答案 0 :(得分:0)
您可以添加代码来说明如何定义wordEntityDescription
吗?
另外,我想你想要:
NSError *error = nil;
您可能需要将等号转换为like
,并在searchText
字段周围使用刻度线:
不幸的是,
[request setPredicate: [NSPredicate predicateWithFormat: @"word like '%@'", searchText]];
NSPredicate
个对象并没有像SQL那样放在一起。查看Apple的NSPredicate programming guide了解更多信息。