【问题标题】:NSPredicate 'The left hand side for an ALL or ANY operator must be either an NSArray or NSSet'NSPredicate 'ALL 或 ANY 运算符的左侧必须是 NSArray 或 NSSet'
【发布时间】:2012-08-21 02:14:20
【问题描述】:

不完全确定为什么这现在不起作用,我认为它以前一直在起作用。有人看到这个 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;
}

再一次,我 99% 确定这段代码直到最近都在工作,所以我想也许我的代码中的某个地方还发生了其他事情。 . .但是当我通过调试器运行它时,这就是挂起的地方。这是我的错误:

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

有什么想法吗?

谢谢!

【问题讨论】:

  • 你的实体的属性和关系是什么?

标签: ios xcode core-data nspredicate nsfetchrequest


【解决方案1】:

看来addedOn 不是一对多关系。确保在谓词中使用正确的属性/关系名称。另外请注意,您不能在“ANY”谓词中使用一对一关系。

【讨论】:

  • +1 具体来说,addedOn 需要是对多的,unique 是一个属性(或一对一关系),或者addedOn 需要是对一和@ 987654325@ 需要是一对多关系。
猜你喜欢
  • 1970-01-01
  • 2014-03-31
  • 1970-01-01
  • 2016-08-02
  • 2020-12-30
  • 2021-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多