Swift Realm:将事务引用设置为nil之后

时间:2016-02-05 23:03:14

标签: swift realm

我有以下代码

class Family: Object {
    dynamic var name = ""
    var members = List<FamilyMember>()
}

class FamilyMember: Object {
    dynamic var name = ""
    dynamic var belongsToFamily: Family?
}

let realm = try! Realm()

let familyMember = FamilyMember()
familyMember.name = "NameExample"

let newFamily = Family()
newFamily.name = "Familyname"

try! realm.write {
    newFamily.members.append(familyMember)
    familyMember.belongsToFamily = newFamily
    realm.add(newFamily)
    realm.add(familyMember)
}

问题:为什么在Realm撰写交易后,familyMember.belongsToFamily设置为nil?

2 个答案:

答案 0 :(得分:1)

它的预期行为。在实际访问属性之前,Realm不会复制任何数据。访问属性时,Realm直接从其文件中获取数据。因此,Realm不会将任何数据存储到其ivar中。此外,Realm对象在持久化时将更改为另一个类。这就是为什么你无法通过调试器看到任何值并在提交后忽略所有值的原因。

因此,如果您想调试对象值,可以在调试控制台中使用po命令,或者只使用print()方法。

另见https://realm.io/docs/swift/latest/#debugging

  

使用Realm的Swift API调试应用程序必须通过LLDB控制台完成。

     

请注意,虽然通过我们的Xcode插件安装的LLDB脚本允许在Xcode的UI中检查Realm变量的内容,但这对Swift来说还不起作用。相反,这些变量将显示不正确的数据。您应该使用LLDB的po命令来检查存储在Realm中的数据的内容。

另见:https://github.com/realm/realm-cocoa/issues/2777

答案 1 :(得分:0)

您可以尝试删除该行吗

realm.add(newFamily)

来自你的写块?