我有一个Device
对象,它有很多类型
。
在我的应用程序中,我需要查询某些具有特定类型或一组类型的设备。
所以我使用的主要功能:
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)
关于ios - 如何使用 IN sql 子句查询 coredata?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43185982/