【发布时间】:2020-05-26 03:20:16
【问题描述】:
假设我有一个 NSManagedObject 类型的 NSManagedObject 对象(从核心数据中获取)Game 和第二个对象 Genre,它只有一个属性 name。
let games: [Game] = []
class Game: NSManagedObject {
@NSManaged public var title: String?
@NSManaged public var genres: NSOrderedSet?
@NSManaged public var publishers: NSOrderedSet?
@NSManaged public var tags: NSOrderedSet?
}
class Genre: NSManagedObject {
@NSManaged public var name: String?
}
let genres: Set<String> = ["Racing", "Strategy", "Fighting"]
假设我有一个类似上述类型的Set,如何使用NSPredicate 从数组中过滤出游戏,其中集合中至少有一种类型与任何游戏中的标签匹配。还是我应该只做一个典型的 for 循环?
【问题讨论】:
-
我很困惑。 “上面的流派集合”是集合
var genres: NSOrderedSet?吗?是否要过滤至少一种游戏类型与任何游戏的任何标签匹配的游戏? -
@Willeke 我有 Game 实体,它与 Genre 实体有一对多关系。我想从字符串数组中过滤掉与任何类型匹配的游戏。现在清楚了吗?
-
是的,标签和流派混在一起了。请编辑问题并删除所有标签(问题中的“标签”一词,而不是问题的标签)。
-
@Willeke 对,已修复 :)
-
尝试谓词
NSPredicate(format: "ANY genres.name in %@", genres)。
标签: arrays swift core-data nspredicate nsmanagedobject