在谓词中使用CONTAINS时,NSFetchedResultsController崩溃

时间:2012-11-30 09:50:25

标签: core-data ios6 nspredicate

实体包含CLPlacemark属性。 我想检查city字符串是否与地标的locality属性匹配。

在谓词中使用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();
        }

1 个答案:

答案 0 :(得分:0)

Core Data中保存的地标不能是CLPlacemark,因为Core Data不支持该类型。

那么,谓词中的placemark是NSManagedObject,其属性locality的类型是NSString吗?如果不是,则崩溃不是由CONTAINS引起的,而是由于谓词试图访问不存在的属性placemark.locality

因此,如果您的地标作为二进制数据类型保存在Core Data中,则无法访问其组件,也无法编写引用其locality属性的谓词。