【问题标题】:Swift: model structs, using optionals vs initialization of empty valuesSwift:模型结构,使用可选项与空值的初始化
【发布时间】:2014-11-19 15:09:38
【问题描述】:

Swift 中,例如我有一个struct 用于此model

struct Message {
    var message: String = ""
    var timestamp: String = ""
    var id: String = ""
}

我将使用数据库中的struct 实例化多个Messages,然后用它们填充TableView

最好的做法是使用可选项而不是像这样用空字符串设置这些变量?

struct Message {
    var message: String?
    var timestamp: String?
    var id: String?
}

基本上将变量设置为nilempty string 会更有效吗? nilempty string 占用更少的内存吗?

【问题讨论】:

  • 强烈推荐查看this问题。那里的答案给出了很好的解释。

标签: ios swift var null


【解决方案1】:

在考虑优化之前,您必须问自己一个好问题:Message 是否有可能包含其一个或多个属性的选项?如果是,请使用可选项,如果不是,请不要使用可选项。

然后,如果你想改进你的代码,你可以使用 memberwise initializer 作为你的struct:

struct Message {
    var message: String
    var timestamp: String?
    var id: String
}

let message = Message(message: "Some message", timestamp: nil, id: "Id14")

最后,我怀疑Struct 上的任何内存优化(带有可选或非可选属性)会给您的应用/项目带来任何显着的改进。

【讨论】:

  • 问自己的好问题。就我而言,我认为nil 没有机会,因为它们将来自数据库。我宁愿在我的数据库中保留空/默认值而不是null。感谢您的帮助!
【解决方案2】:

尽可能避免使用可选项。存储的属性并不像在 Objective-c 中那样神奇。如果合适,只需给它们默认值。

【讨论】:

  • optionals 在许多情况下为您提供了很大的灵活性。没有必要初始化虚拟空字符串。
  • 而且它们也使逻辑复杂化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
  • 2020-03-05
相关资源
最近更新 更多