簡體   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