ios - 如何使用 IN sql 子句查询 coredata?

标签 ios swift core-data

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

可惜没有成功,

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

最佳答案

假设实体 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)

关于ios - 如何使用 IN sql 子句查询 coredata?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43185982/

相关文章:

ios - 不同版本的 iOS 上的 EXC_BREAKPOINT

ios - Swift:UICollectionViewController 的标题与单元格重叠

ios - -(Class)class 是什么意思?

ios - 无法将不可变值作为 inout 参数传递

ios - 如何用图像创建侧滚动条效果?

ios - 如何在 iOS 应用程序的同一个项目中集成 Objective-C 和 Swift pod

ios - 在 tableViewCell 上显示来自子节点的所有数据

iphone - 从 NSFetchRequest 检索单个对象

ios - NSManagedObjectContext - FetchRequest 死锁

ios - 注释未与核心数据一起出现