[英]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.