Swift:模型结构,使用可选项与空值的初始化
Posted
技术标签:
【中文标题】Swift:模型结构,使用可选项与空值的初始化【英文标题】:Swift: model structs, using optionals vs initialization of empty values 【发布时间】: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?
基本上将变量设置为nil
和empty string
会更有效吗? nil
比 empty string
占用更少的内存吗?
【问题讨论】:
强烈推荐查看this问题。那里的答案给出了很好的解释。 【参考方案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
在许多情况下为您提供了很大的灵活性。没有必要初始化虚拟空字符串。
而且它们也使逻辑复杂化。以上是关于Swift:模型结构,使用可选项与空值的初始化的主要内容,如果未能解决你的问题,请参考以下文章