Swift 中 Realm 查询的交叉引用谓词
Cross-referencing predicate for Realm queries in Swift
所以我最近一直在 Swift 中学习 Realm,我遇到了一个关于数据模型之间潜在通知的设计问题。如果有人愿意透露一些见解,我们将不胜感激。
// Class A is what users mainly interact with
Class A: Object {
dynamic var propertyA = ""
dynamic var propertyB = ""
dynamic var propertyC = ""
override static func primaryKey() -> String? {
return "propertyA"
}
}
// Class B is what the server interacts with, like data feeding
Class B: Object {
dynamic var propertyA = ""
dynamic var propertyX = ""
dynamic var propertyY = ""
dynamic var propertyZ = ""
override static func primaryKey() -> String? {
return "propertyA"
}
}
我在控制器中为 Object A
设置了一个通知块。因此,每当 resultObjectsA
中发生更改时,都会触发通知块。
let resultObjectsA = realm.objects(A).filter('predicate1')
let notificationTokenA = resultObjectsA.addNotificationBlock {
...
}
在我正在构建的应用程序中,用户可以select一组Object A
,应用程序将查询select离子的状态从服务器设置。 return 结果在 Object B
中将是 stored/presented。现在,我需要为 Object B
:
写一个 query/predicate
let resultObjectsB = realm.objects(B).filter('predicate2')
使得 resultObjectB
条目中的 propertyA
可以在 resultObjectsA
条目中的 propertyA
中找到,就像一对一的映射。
我不确定这样的谓词是否可行。如果还有其他方法可以实现我想在这里做的事情,我也很想学习。
查询所有(实际上应该有一个对象因为主键)对象B
where objectB.propertyA == objectA.propertyA
use:
let resultObjectsB = realm.objects(B).filter('propertyA = %@', objectA.propertyA)
另一种选择是使用 A
和 B
之间的一对一关系,在 https://realm.io/docs/swift/latest/#to-one-relationships
了解更多信息
所以我最近一直在 Swift 中学习 Realm,我遇到了一个关于数据模型之间潜在通知的设计问题。如果有人愿意透露一些见解,我们将不胜感激。
// Class A is what users mainly interact with
Class A: Object {
dynamic var propertyA = ""
dynamic var propertyB = ""
dynamic var propertyC = ""
override static func primaryKey() -> String? {
return "propertyA"
}
}
// Class B is what the server interacts with, like data feeding
Class B: Object {
dynamic var propertyA = ""
dynamic var propertyX = ""
dynamic var propertyY = ""
dynamic var propertyZ = ""
override static func primaryKey() -> String? {
return "propertyA"
}
}
我在控制器中为 Object A
设置了一个通知块。因此,每当 resultObjectsA
中发生更改时,都会触发通知块。
let resultObjectsA = realm.objects(A).filter('predicate1')
let notificationTokenA = resultObjectsA.addNotificationBlock {
...
}
在我正在构建的应用程序中,用户可以select一组Object A
,应用程序将查询select离子的状态从服务器设置。 return 结果在 Object B
中将是 stored/presented。现在,我需要为 Object B
:
let resultObjectsB = realm.objects(B).filter('predicate2')
使得 resultObjectB
条目中的 propertyA
可以在 resultObjectsA
条目中的 propertyA
中找到,就像一对一的映射。
我不确定这样的谓词是否可行。如果还有其他方法可以实现我想在这里做的事情,我也很想学习。
查询所有(实际上应该有一个对象因为主键)对象B
where objectB.propertyA == objectA.propertyA
use:
let resultObjectsB = realm.objects(B).filter('propertyA = %@', objectA.propertyA)
另一种选择是使用 A
和 B
之间的一对一关系,在 https://realm.io/docs/swift/latest/#to-one-relationships