2016-09-18 96 views
9

我目前正在寫斯威夫特3碼在Xcode 8「屬性oldValue」和「NEWVALUE」默認參數內willSet/didSet名未確認

當使用willSetdidSet塊內oldValuenewValue默認參數,我得到"unresolved identifier"編譯器錯誤。

我有一個非常基本的代碼如下

var vc:UIViewController? { 
    willSet { 
     print("Old value is \(oldValue)") 
    } 
    didSet(viewController) { 
     print("New value is \(newValue)") 
    } 
} 

Apple Documentation爲雨燕3似乎仍然支持這些功能。 我希望我不會在這裏錯過任何東西?

回答

6
var vc:UIViewController? { 
    willSet { 
     print("New value is \(newValue)") 
    } 
    didSet { 
     print("Old value is \(oldValue)") 
    } 
} 
+1

不完全正確,oldValue似乎仍然無法識別。刪除'viewController'參數似乎使它工作。 – Adithya

+0

是的,對不起。我沒有注意到你的變量。 –

-2

Dmytro's answer我能夠內willSetoldValue作品演繹,newValue作品給沒有自定義參數didSet塊。

var vc:UIViewController? { 
    willSet { 
     print("New value is \(newValue)") 
    } 
    didSet { 
     print("Old value is \(oldValue)") 
    } 
} 
14

您還可以使用vc

var vc:UIViewController? { 
    willSet { 
     print("New value is \(newValue) and old is \(vc)") 
    } 
    didSet { 
     print("Old value is \(oldValue) and new is \(vc)") 
    } 
    } 
0

你沒有嘗試初始化一個新的對象變量,通過它可以設置您的Clojure:

var vc:UIViewController? = UIViewController(){ 
    willSet { 
     print("Old value is \(oldValue)") 
    } 
    didSet(viewController) { 
     print("New value is \(newValue)") 
    } 
}