我有一个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
}
}
但不幸的是它没有用,
有没有处理此案的具体方法。谢谢
假设实体Device
的type
字段的类型为 String
,请使用字符串Array
:
var typesStrings = [String]()
for type in types {
typesStrings.append(type.rawValue)
}
...
deviceFetch.predicate = NSPredicate(format: "type in (%@)", typesStr)
如果它是类型 Types
. 简单 立即获取给定的数组:
deviceFetch.predicate = NSPredicate(format: "type in (%@)", types)