NSPredicate'ALL或ANY运算符的左侧必须是NSArray或NSSet'

Sea*_*ser 5 xcode core-data nspredicate nsfetchrequest ios

不完全确定为什么现在不起作用,我以为它以前一直在工作.有没有人看到这个FetchRequest构造的问题?

- (NSArray *)entriesForDate:(NSDate *)date {
    NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:@"Entry"];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY addedOn.unique like %@", [T3Utility identifierForDate:date]];
    request.predicate = predicate;

    NSError *error = nil;
    NSArray *matches = [self.database.managedObjectContext executeFetchRequest:request error:&error];

    return matches;
}
Run Code Online (Sandbox Code Playgroud)

再一次,我99%肯定这段代码一直在工作,直到最近,所以我想也许我的代码中某处还有其他东西..但是当我通过调试器运行时,这就是挂起的地方.这是我的错误:

ALL或ANY运算符的左侧必须是NSArray或NSSet

有任何想法吗?

谢谢!

Mun*_*ndi 8

这似乎addedOn不是一个多对多的关系.确保在谓词中使用属性/关系的正确名称.另请注意,您不能在"ANY"谓词中使用to-one关系.

  • 具体地说,+1'addedOn`需要是to-many,`unique`是属性(或to-one关系),或者`addedOn`需要是to-one而`unique`需要是-to-很多关系. (2认同)