更新到Swift 1.2 / Xcode 6.3会导致以下错误:
了解1.1和1.2之间发生的变化的人是否可以帮助解决这里发生的事情?所有帮助赞赏!感谢您阅读此内容!
答案 0 :(得分:1)
在Swift 1.2中,跟随?
的变量来打开它是违法的。 ?
用于可选链,然后必须跟随方法调用,成员查找(即属性)或下标,如错误消息所示。
在您添加的评论中:
如果我删除“?”代码符合ok但是在节点时会发生什么 没有名字?
将String?
与文字String
值进行比较而不首先展开变量是完全有效的。如果可选项为nil
,则nil
不等于任何文字String
,因此if
将失败。
在Swift Playground中尝试以下操作:
var str: String? = nil
if str == "hello" {
println("it is hello")
} else {
println("not hello") // prints "not hello"
}
// Here we reassign str, but it is still a String?
str = "hello"
if str == "hello" {
println("it is hello") // prints "it is hello"
} else {
println("not hello")
}
只需将paintedNode.name
与"paintedArea"
进行比较即可完全安全,如果该节点没有名称,则paintedNode.name
将为nil
,{{1}将失败,就好像它有一个不同的名字。