Realm数据库对象似乎是空的,但后来却不是

Ner*_*ist 3 realm ios swift

我正在使用Realm进行一个简单的小项目.我正在使用最新版本的框架(昨天从Github编译)和当前AppStore版本的Xcode和Swift 2.1.

我正在通过segue将Realm数据库对象从一个视图控制器移交给另一个视图控制器prepareForSegue(),以便对其进行编辑(并填写当前值).

不知何故,目标视图控制器中的对象似乎存在问题.当我只是print()目标视图控制器中的对象(在viewDidLoad()我计划使用它的任何方法中)时,对象在控制台中正确显示,如下所示:

Object {
name = asdf
value = 8
}
Run Code Online (Sandbox Code Playgroud)

等等.

如果我尝试访问这些值(即使在上一行或下一行中)并将它们分配给另一个变量,就像myValue = objectToEdit.value我得到0一样.

通过使用断点调试代码来显示调试器中的对象,其中所有值为空("")或0,具体取决于类型.不过,不管怎么说,Strings因为某些原因被抓出来了,我可以访问并打印它们myString = objectToEdit.name,而调试器显示name = (String) "",声称它是空的.

当我在第一个视图中从数据库中获取数据库对象时,已经发生了相同的行为.直接的想法是,值确实为0并且只保存了字符串,但print()方法另有说法.

任何人都可以解释这种奇怪的行为,也许可以告诉我哪些地方忽略了什么?我现在怀疑这是框架的一些内部问题,但我不确定.如果需要,我当然会更新代码或回答问题.

Ner*_*ist 7

我发现这个问题时,我注意到奇怪的是,这些值是我在模型定义中的"默认"值.

出于某种原因,我没有dynamic在某些属性上使用声明,如下所示:

class myObject: Object {
    dynamic var name = ""
    var value = 0
}
Run Code Online (Sandbox Code Playgroud)

这导致在视图控制器中创建的新Object具有这些标准值,并且我总是得到0,但另一方面可以得到正确的字符串.

添加dynamic到变量声明修复了我的问题.

谢谢你的回答.