2

在下面的示例中,为什么两个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 个元素。

我不明白为什么第一个请求没有返回我在第二种方法中获得的一个元素。它们不应该是等价的吗?

4

1 回答 1

0

这可能不是作为答案,我不知道如何在评论中写出如此长的文本。我不太确定您不能直接在 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。

于 2013-09-24T08:24:10.797 回答