使用CoreData和NSFetchedResultController發現了真正奇怪的問題。使用NSFetchedResultController委託使用BOOL和重新加載數據的NSPredicate
我展示從該謂詞返回一個UITableView(使用NSFetchedResultController)元素:
NSPredicate *activeFilterPredicate = [NSPredicate predicateWithFormat:@"(SUBQUERY(properties, $x, ($x.type == %@) AND ($x.deleted == %@))[email protected] > 0)", @"sales/lead", [NSNumber numberWithBool:NO]];
它正常工作時我手動重新加載元件或如果我修改它們上相同的NSManagedObjectContext。 我的應用程序也從web服務器更新自己 - 比在子線程上我正在修改它並通過父子關係保存。
NSFetchedResultsController委託的所有方法都能正常工作 - 對於其他NSPredicates,我在那裏一切正常。
1天分析,並試圖敲定看來問題是這部分中的問題後:
($x.deleted == %@).
看來,當它被用孩子方面修改,父上下文的NSPredicate不工作正確,而不是過濾出它應該的條目。
當我將屬性切換到NSString而不是NSNumber,並且我將YES/NO編碼到NSString中 - 它工作。
有沒有人有這個問題,現在如何克服它?我想在最後切換到使用BOOL屬性。
我已經試過(刪除== NO) - 不利於
重複的[核心數據布爾鍵值更改不反映在提取](http://stackoverflow.com/questions/18107286/core-data-boolean-key-value-change-not-reflected-in-fetch) ? - 您不應該將關係稱爲「已刪除」。 –