繁体   English   中英

iPhone的核心数据在获取请求时崩溃

[英]iPhone's Core Data crashes on fetch request

我正在使用以下代码从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文件)。

有任何想法吗?

PS别介意代码样式,这只是一个便笺本。 并且,当然,可以随时要求任何其他信息。 如果有人可以帮助,那将是非常不错的。

更新1 Alex Reynolds,感谢您的帮助:)代码(希望您看到的是这样):

NSEntityDescription * wordEntityDescription; //that's the declaration (Captain Obviousity :)
wordEntityDescription = [NSEntityDescription entityForName: @"Word" inManagedObjectContext: ctx];

至于谓词-没关系。 我完全删除了谓词(仅获取所有记录),但这没有任何区别。

同样,相同的代码在桌面应用程序中也可以正常工作,这使我发疯(当然,我需要添加一些内存管理内容,但是至少它应该产生几乎相同的行为,不是吗?)

您可以添加代码以显示wordEntityDescription的定义方式吗?

另外,我认为您想要:

NSError *error = nil;

您可能需要将等号符号切换为like并在searchText字段周围使用刻度线:

[request setPredicate: [NSPredicate predicateWithFormat: @"word like '%@'", searchText]];

NSPredicate是, NSPredicate对象没有像SQL那样放在一起。 查阅Apple的NSPredicate编程指南以获取更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM