将非可选变量更改为Swift可选类型会中断其在代码中的所有出现



我有一个实例变量,它在Swift中没有声明为可选类型(它总是有一个初始值)。

var array: Array<MyObject> = []

在我的项目后期,我意识到我应该将其作为一个可选选项:

var array: Array<MyObject>?

然而,当我这样做时,它会打断当前代码中出现的所有变量。我突然不得不在每次调用它时都附加一个?

有没有一种方法可以在Swift中编写变量,使其在可选和非可选之间切换时不会中断?

如果你不想让它成为一个真正的可选,但它需要是nil,你可以让它成为隐式展开的可选。你这样申报:

var foo: String!

然后你可以像现在一样使用它,但它也可以是nil。如果你真的确定你确实设置了它,你应该只在没有零检查的情况下使用它

但是这不是一个好方法,因为你失去了Swift为期权提供的安全性。我仍然只能建议对可选的进行重构,但如果这不可能的话,这应该会奏效。

有关隐式展开选项的更多信息,我想参考苹果公司的iBook中的"Swift编程语言"自动引用计数章节。

不是,不是。
(您可能可以摆脱Xcode的一些重构功能,如重命名范围内的所有内容。)

但这其实是一件好事如果你意识到一个变量需要是可选的,那么你的代码的其余部分也必须意识到它,并适当地处理它。在Swift中,这是强制执行的。

喜欢编写更安全的代码!

最新更新