iOS:“@count == 0”的 NSPredicate 用于一对一和一对多关系

Posted

技术标签:

【中文标题】iOS:“@count == 0”的 NSPredicate 用于一对一和一对多关系【英文标题】:iOS: NSPredicate for "@count == 0" for both to-one and to-many relationships 【发布时间】:2012-04-23 09:20:06 【问题描述】:

我想写一个NSPredicate,它适用于一对一和多对关系:

1) 我有一个 NSMutableArray,它将运行 filterUsingPredicate 方法 2) NSPredicate 将过滤掉包含关系中任何对象的选定关系(同样,对于一对一和对多关系)。

我尝试过类似predicateWithFormat:@"relationshipObjects.@count == 0" 的方法,但这似乎只适用于多对关系。是否有类似的谓词格式适用于一对一和一对多关系?

【问题讨论】:

【参考方案1】:

我认为,您可以在此处使用检查 nil

predicateWithFormat:@"relationshipOject != nil"

【讨论】:

您好,感谢您的回复!也许我不清楚,但我希望过滤器保持零关系。但是,如果我使用“relationshipObject == nil”,它只适用于一对一的关系。我目前正在尝试@"(relationshipObject == nil) OR (relationshipObject.@count == 0)" 但它会导致错误,因为一对一的 NSManagedObject 不响应@count。 我继续使用 NSCompoundPredicate 根据关系类型(一对一或对多)将谓词分成两部分。这行得通。 powetoold 你能发布你做了什么吗? predicateWithFormat:@"relationshipOject != nil" 不适用于我的一对一关系:( 我的没有工作,因为我正在为我的 NSFetchedResultsController 使用缓存。它有助于更​​改缓存的名称。 NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"NewCacheName123"];

以上是关于iOS:“@count == 0”的 NSPredicate 用于一对一和一对多关系的主要内容,如果未能解决你的问题,请参考以下文章

iOS经典面试题总结--内存管理

iOS 判断数组是否为空

NSPredicateEditor 的 UI 约定

同项 SwiftUI 列表

目标c中的电子邮件地址验证

sql语句中count(0)和count(1)的区别