【问题标题】:Realm.io Optional PropertiesRealm.io 可选属性
【发布时间】:2014-08-17 01:51:24
【问题描述】:

我刚刚开始在 iOS 上使用 Realm.io 并尝试填充对象但得到以下结果:

Invalid value nil for property

如何使属性变为可选?

【问题讨论】:

    标签: ios realm


    【解决方案1】:

    你现在不能。此时只有关系可以为零。不过,我们正在努力尽快添加它!

    【讨论】:

    • 对此有任何更新吗?对于我为我们的客户构建的应用程序来说,拥有可选参数是必不可少的。没有它,我将不得不添加一些代码气味。
    • 它仍在制作中。同时,也许您可​​以考虑将您的属性包装在对象中?这些可以是可选的。因此,您将拥有两个对象属性,一个只包含一个字符串,一个只包含一个 int,而不是拥有一个字符串和一个 int 作为属性。
    • 我去实现 + (NSDictionary *)defaultPropertyValues;提供默认的空值。它成功了。
    • 有什么合适的方法吗??
    • 好时机——我们现在实际上正在我们的核心中实现这一点。这需要很长时间,因为我们必须逐个类型地实现支持,确定查询如何处理它等。与此同时,一个好的解决方法是将这些属性包装在 RLMObject 中,这可以是可选的:github.com/realm/realm-cocoa/issues/628#issuecomment-56765986跨度>
    【解决方案2】:

    从 0.96 开始,以下属性现在可以实现,请参阅 realm.io 获取最新文档。

    NSString *, NSDate *, NSData * 现在默认允许 nil。您可以通过覆盖+requiredProperties 类方法并包括您要禁止为 nil 的属性的名称来禁止将属性设置为 nil。访问使用以前版本创建的 Realm 文件会自动将这些属性在文件本身中转换为可为空,除非在 +requiredProperties 中明确标记为不这样做。

    可以使用带有数字类型标记的NSNumber * 属性存储可选数字。您可以使用NSNumber<RLMInt> *NSNumber<RLMBool> *NSNumber<RLMFloat> *NSNumber<RLMDouble> *

    【讨论】:

    • 您能否扩充答案以详细说明如何将现有的非可选属性转换为可选属性(迁移)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 2013-12-27
    • 2021-05-04
    • 2018-06-23
    • 1970-01-01
    相关资源
    最近更新 更多