gpt4 book ai didi

Swift diff realm.io 无需提前获取

转载 作者:可可西里 更新时间:2023-11-01 00:59:20 29 4
gpt4 key购买 nike

我想知道在 realm.io (swift) 中是否有可能从一个“表”中选择另一个“表”中不存在的所有项目。

假设您有 2 个类:

class A: Object {
dynamic var id: Int = 0
dynamic var text: String = ""
}

class B: Object {
dynamic var id: Int = 0
dynamic var value: Bool = false
}

是否可以从 A 中获取其 ID 不存在于 B 中的项目的结果?

最佳答案

实际上有一种非常简单的方法可以在 Realm 过滤器 API 上使用 NSPredicate 来做到这一点。

func fetch() throws -> [A] {
do {
// Create Realm
let realm = try Realm()

// Get B objects from Realm and put their IDs to [Int] array
let IdB: [Int] = realm.objects(B).map { $0.id }

// Create predicate
// Filter all items where property id is not present in array IdB
let predicateFilter = NSPredicate(format: "NOT (id IN %@)", IdB)

// Get all A objects from array using predicateFilter
let objectsA = realm.objects(A).filter(predicateFilter)

// Return the [A] array
return objectsA.map { $0 }
} catch {

// Throw an error if any
throw error
}

}

另请注意,使用 Realm 获取的所有对象都是延迟加载的,这意味着此方法也非常快。来自文档:

All queries (including queries and property access) are lazy in Realm. Data is only read when the properties are accessed.

关于Swift diff realm.io 无需提前获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37657572/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com