【问题标题】:Core Data optional attributes and properties with Swift rules带有 Swift 规则的 Core Data 可选属性和属性
【发布时间】:2019-09-15 07:00:44
【问题描述】:

Swift 通过添加可选项为开发人员带来了很好的机会,但是现在当我使用 Core Data 时,我遇到了一些问题。

我使用 API 从服务器返回一些我想映射到适当的核心数据对象然后创建记录的对象。

例如,我有 id、name、age 属性,这些都是我从服务器接收到的非可选属性。

另一方面,当服务器为我们返回某些财产时,我们可能会遇到这种情况。但是,假设这发生在 id 属性上。

我的问题是我们是否需要具有可选或非可选属性如何确定使用哪一个。目前我所有的属性都是可选的,到处打开它很烦人。也许最好创建验证器并防止插入任何空对象。

【问题讨论】:

    标签: swift core-data


    【解决方案1】:

    我认为,如果 Apple 的 Swift 团队看到你的问题,他们会微笑着说:“好问题!另一个 Swift 如何帮助开发人员质疑和改进代码的例子。”

    我的做法是:

    1. 让核心数据成为核心数据。属性可以为空。如果正确的操作要求属性不为空,您可能希望在插入之前对其进行验证。但是,由于 Core Data 是一个 persistence 框架,我假设这些对象被保存到磁盘中,并且永远不应该信任来自磁盘的数据……它可能已损坏,或者某些无法预见的未来版本您的应用或应用扩展程序可能有意或无意地导致某些属性为空。

    2. 让 Swift 成为 Swift。 Swift 的一个主要设计目标是保护您免受此类意外空值的影响。正如您所认识到的,不鼓励强制展开。请改用if letguard let。这些是explained in Apple's Swift book,尽管您可以找到数十篇博文like this one,这些博文更重要。

    【讨论】:

    • 谢谢杰瑞!是的,关于磁盘上的数据非常有价值的 cmets。我喜欢 Swift 设计,我只是对标识符等这些必填字段感到困惑。但理论上你是对的,信息可能被破坏,然后我们可能会遇到你描述的此类问题。
    猜你喜欢
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多