如何使用 IN sql 子句查询核心数据



我有一个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
    }
}

但不幸的是它没有用,

有没有处理此案的具体方法。谢谢

假设实体Devicetype字段的类型为 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)

最新更新