我有像这样的NSManagedObject类
class Company: NSManagedObject {
@NSManaged var name: String
@NSManaged var kind: String
@NSManaged var tags: NSSet?
}
其中"标签"包含字符串数组(不是NSManagedObjects)。我试图像这样过滤它:
let request = NSFetchRequest(entityName: "Company")
request.returnsObjectsAsFaults = false
request.predicate = NSPredicate(format: "ANY %@ in tags", tag)
request.fetchBatchSize = 20
let results = context.executeFetchRequest(request, error: nil)!
但它没有用。我也尝试过这些可能性:
NSPredicate(format: "ANY tags CONTAINS %@", tag)
NSPredicate(format: "ANY tags.allObjects CONTAINS %@", tag)
答案 0 :(得分:0)
我认为您的谓词格式可能不正确。
尝试:
request.predicate = NSPredicate(format: "ANY %@ in %@", tag, tags)
请在此处阅读相应的Apple Documentation。
答案 1 :(得分:0)
在搜索上花了很多时间之后,我发现的唯一解决方案是将tags
的类型更改为String
,并按照以下方式对其进行过滤:
NSPredicate(format: "ANY tags CONTAINS[CD] %@", tag)
似乎无法过滤NSSet
NSManagedObject
属性