我有一個核心數據導入器,它循環訪問數據,並在導入過程中忽略重複的記錄。提取未保存的數據時奇怪的核心數據行爲
但我發現我的NSFetchRequest未與未保存的最近存儲的記錄匹配。我看到看似完全相同的查詢提供了不同的和意想不到的結果。
例如,在我的測試中,我發現,這個查詢匹配,並返回結果:
fetchTest.predicate = [NSPredicate predicateWithFormat:@"%K = 3882", @"intEmployee_id"];
但是,這看似相同的一個不:
fetchTest.predicate = [NSPredicate predicateWithFormat:@"%K = %@", @"intEmployee_id", @"3882"];
但是 - 它們都匹配後相同上下文被保存到持久存儲中。
Apple的文檔說,提取應該在默認情況下針對掛起的更改工作,實際上我確定[fetchTest includesPendingChanges] = YES。
任何想法究竟在這裏發生什麼?這兩次獲取可能返回不同的結果怎麼可能?
我認爲你可能會做些什麼...我習慣了SQLite不能根據類型進行區分,到目前爲止我所有的Core Data實驗都沒有問題,即使下面的數據字段是一個號碼。 – radven
然後這就是它。核心數據有意隱藏數據庫層。你預期的行爲是不可預測的。查詢ID的正確方法是上面的代碼。嘗試一下,讓我知道它是否解決了這個問題。 – Mundi