Существует несколько решений, но ваш linkingObject - хороший вариант. Это действительно сводится к тому, какие запросы вы хотите выполнить.
Итак, давайте начнем с очень простого примера, который позволит вам запрашивать транзакции для любой, у которой есть родительский аккаунт, где valid - 'true' - это ответ на ваш вопрос.
class Account: Object {
@objc dynamic var id: String?
@objc dynamic var name: String?
@objc dynamic var valid: String?
}
class Transaction: Object {
@objc dynamic var id: String?
@objc dynamic var desc: String?
@objc dynamic var accountId: String?
@objc dynamic var parent_account: Account?
}
затем создайте пару объектов
let a0 = Account()
a0.name = "account 0"
a0.valid = "true"
let a1 = Account()
a1.name = "account 1"
a1.valid = "false"
let t0 = Transaction()
t0.desc = "trans 0"
let t1 = Transaction()
t1.desc = "trans 1"
t0.parent_account = a0
t1.parent_account = a1
try! realm.write {
realm.add([t0, t1])
}
после записи этих данных, если вы хотите транзакции, в которых действительное свойство parent_account == 'true'
let results = realm.objects(Transaction.self).filter("parent_account.valid == 'true'")
for account in results {
print(account.desc)
}
и результат равен
Optional("trans 0")
Имейте в виду, что это очень и очень просто c и, вероятно, не будет работать для вашего варианта использования в долгосрочной перспективе. Исследование LinkingObjects и обратных связей, вероятно, будет лучшим решением, но это должно помочь вам.
Ох ... вероятно, превращение активного свойства в bool будет лучше, чем string.