2016-04-24 25 views
3

如何可以設置默認實現didSet以協議VAR 我嘗試,但我有錯誤斯威夫特:協議缺省實現 - didSet

擴展可能不包含存儲性能

protocol MyProtocol { 
    var contact: MyContact? { get set } 
} 

extension MyProtocol { 
    var contact: MyContact? { 
     didSet { 
      // some code 
     } 
    } 
} 

回答

2

來自文檔:

擴展可以添加新的計算屬性,但它們不能添加存儲的屬性,或者將屬性觀察器添加到現有屬性。

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Extensions.html#//apple_ref/doc/uid/TP40014097-CH24-ID151

如果你想設置的contact默認值,那麼它必須是一個計算的屬性。

extension MyProtocol { 
    var contact: MyContact? { 
    return MyContact() 
    } 
} 
+0

不,我需要做一些事情後設置聯繫... –

+0

然後我想你將不得不添加觀察者符合您的協議的對象。 –

+0

如果它們是Objective-C類,則可以使用鍵值觀察。 – NobodyNada