在下面的示例中,为什么两个properties
数组不具有相同的元素?第一个数组为空,第二个数组包含1个元素,但它们使用相同的谓词...
NSError *error;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"publication.store.storageMode != 0 && publication.store.complete == NO && publication.download == NIL"];
NSFetchRequest *request1 = [NSFetchRequest fetchRequestWithEntityName:@"Property"];
request1.predicate = predicate;
NSArray *properties1 = [self executeFetchRequest:request1 error:&error];
NSFetchRequest *request2 = [NSFetchRequest fetchRequestWithEntityName:@"Property"];
NSArray *allProperties = [self executeFetchRequest:request2 error:&error];
NSArray *properties2 = [allProperties filteredArrayUsingPredicate:predicate];
properties1
有0个元素。allProperties
有12个元素。properties2
有1个元素。我不明白为什么第一个请求不会返回我在第二个方法中得到的一个元素。它们不应该是等价的吗?
答案 0 :(得分:0)
这可能不是作为答案,我不知道如何在评论中写suych长文本。我不太确定你不能直接在你的CoreData谓词中使用BOOL获取。
因此,出于测试目的,我会尝试使用两个不同的谓词:
NSPredicate *predicateArray = [NSPredicate predicateWithFormat:@"publication.store.storageMode != 0 && publication.store.complete == NO && publication.download == NIL"];
NSPredicate *predicateCoreData = [NSPredicate predicateWithFormat:@"publication.store.storageMode != 0 && publication.store.complete == %@ && publication.download == NIL",[NSNumber numberWithBool:myBool]];
另外,我会用nil替换NIL。