我知道Swift中推荐的方法是使用:
class Address {
var firstLine : String?
var secondLine : String?
}
但有时我会看到其他开发人员以这种方式编写代码:
class Address {
var firstLine : String = ""
var secondLine : String = ""
}
这是否是一种未经推荐的方式,因为无论何时nil
,您都会崩溃,而且您无法恢复。是对的吗?或者有一些使用非默认选项的用例可能很好。如果是,那么在哪里?
我看到了另一个question,它询问效率而不是更适合您的需求。我正在寻找一个答案,它说"这是一个使用非选项的好地方,这是一个使用选项的好地方"。有时我看到大家只是在任何地方转储选项,这让我觉得我们不需要非选项吗?有时我会看到人们试图尽可能地避免使用选项,而只是采用Objective-C风格的代码。
上述问题的答案并不代表非选择权益良好的有效案例。对此不屑一顾。至于选择选项:我猜测通过网络电话填充的模型,选项是正确的选择,因为你不知道它是否nil
。
答案 0 :(得分:7)
选择取决于你的模特。
如果您建模的对象的属性可能完全不存在,例如中间名,姓名后缀,备用电话号码等,应使用可选项进行建模。 nil
可选项告诉您该属性不存在 - 即某人没有中间名或其他电话号码。当您必须区分空对象和缺失对象时,您还应该使用可选项。
如果必须设置对象的属性,并且该属性具有有意义的默认值,请使用带有默认值的非可选对象:
class AddressList {
var addresses : [Address]
var separator : String = ";"
...
}
如果您班级的用户需要更改分隔符,他们就可以这样做。但是,如果他们不关心分隔符,他们可以继续使用默认值而不在自己的代码中提及它。
答案 1 :(得分:0)
如果您认为变量可能没有值,那么您应该使用选项。但如果您确定它会有价值,那么您就不需要使用它们。
因此,如果您确定变量将具有值,则仅使用非期权,否则使用期权。