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

时间:2009-09-13 21:13:01

标签: iphone-sdk-3.0 core-data

我正在使用以下代码从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];

至于谓词 - 没关系。我完全删除了谓词(只是抓住所有记录),这没有任何区别。

同样,相同的代码在桌面应用程序中运行得很好,这让我发疯(当然,我需要添加一些内存管理的东西,但它至少应该产生几乎相同的行为,不应该?)

1 个答案:

答案 0 :(得分:0)

您可以添加代码来说明如何定义wordEntityDescription吗?

另外,我想你想要:

  

NSError *error = nil;

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

  

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

不幸的是,

NSPredicate个对象并没有像SQL那样放在一起。查看Apple的NSPredicate programming guide了解更多信息。