我有一个Device
对象,其中包含许多Types
。
在我的应用程序中,我需要查询一些具有特定类型或一组类型的设备。
所以我使用的主要功能是:
func get_ByDeviceType(_ type: Device.deviceType) -> [Device]? {
let deviceFetch: NSFetchRequest<Device> = Device.fetchRequest()
deviceFetch.predicate = NSPredicate(format: "type == \(type.rawValue)")
do {
let device = try context.fetch(deviceFetch)
return device
} catch {
return nil
}
}
现在,当我尝试获得一组Devices
时,我尝试了这个:
func get_ByDeviceTypes(_ types: [Device.deviceType]) -> [Device]? {
var typesStr = ""
var sep = ""
for type in types {
typesStr += sep + "\(type.rawValue)"
sep = ","
}
let deviceFetch: NSFetchRequest<Device> = Device.fetchRequest()
deviceFetch.predicate = NSPredicate(format: "type in (%@)", typesStr)
do {
let device = try context.fetch(deviceFetch)
return device
} catch {
return nil
}
}
但不幸的是它没有用,
是否有特定的方法来处理此案例。感谢
答案 0 :(得分:1)
假设实体type
的{{1}}字段属于Device
类型,请使用String
个字符串:
Array
如果是var typesStrings = [String]()
for type in types {
typesStrings.append(type.rawValue)
}
...
deviceFetch.predicate = NSPredicate(format: "type in (%@)", typesStr)
类型。简单地立即采取给定的数组:
Types