0
實體包含CLPlacemark
財產。 我想檢查city
字符串是否與地標的局部屬性匹配。NSFetchedResultsController崩潰謂詞CONTAINS
崩潰發生在performFetch
當我在謂語使用CONTAINS
。
predicate = [NSPredicate predicateWithFormat:@"placemark.locality CONTAINS[cd] %@", city];
[_fetchedResultsController.fetchRequest setPredicate:predicate];
NSError *error = nil;
if (![[self fetchedResultsController] performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
標的是可轉換的類型,並在實體類它設置爲CLPlacemark。好的,謝謝,我想我會嘗試創建getter方法的地方在課堂上解決 – Shmidt
如果它是一個可轉換的類型,你不能在謂詞訪問'locality'。你必須製作一個'Placemark'實體。對於新的地標實體,您可以添加您感興趣並想要保存到Core Data的CLPlacemark的任何屬性(如'locality')。因此,您不會在Core Data中擁有完整的ClPlacemark,但您將能夠訪問其組件,或者至少可以創建屬性的一次。 –
我希望這是有幫助的,而且很清楚。可轉換屬性作爲NSData保存在Core Data中。所以,一個獲取請求只會看到一個NSData數據塊,並且NSData將不會被轉換回CLPlacemark,直到它從Core Data中被檢索出來爲止。換句話說,獲取請求將無法看到CLPlacemark的組件,因爲它已被轉換爲NSData以存儲在Core Data中。而且,由於謂詞試圖訪問'locality',並且'locality'在覈心數據中不存在,它會崩潰。 –