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

ios – Realm数据库对象似乎是空的,但后来却不是,第1张

概述我正在使用 Realm进行一个简单的小项目.我正在使用最新版本的框架(昨天从Github编译)和当前AppStore版本的Xcode和Swift 2.1. 我正在通过prepareForSegue()中的segue将Realm数据库对象从一个视图控制器移交给另一个视图控制器,以便对其进行编辑(并填写当前值). 不知何故,目标视图控制器中的对象似乎存在问题.当我只是在目标视图控制器中打印()对象时( 我正在使用 Realm进行一个简单的小项目.我正在使用最新版本的框架(昨天从Github编译)和当前AppStore版本的Xcode和Swift 2.1.

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

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

Object {name = asdfvalue = 8}

等等.

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

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

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

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

解决方法 我发现这个问题时,我注意到奇怪的是,这些值是我在模型定义中的“默认”值.

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

class myObject: Object {    dynamic var name = ""    var value = 0}

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

向变量声明添加动态修复了我的问题.

谢谢你的回答.

总结

以上是内存溢出为你收集整理的ios – Realm数据库对象似乎是空的,但后来却不是全部内容,希望文章能够帮你解决ios – Realm数据库对象似乎是空的,但后来却不是所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1014408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存