嗨我寫信關於職位https://appventure.me/2015/10/17/advanced-practical-enum-examples/#sec-4-2如何在屬性觀察者(didSet,willSet)中使用枚舉?
如何在屬性的didSet中使用觀察者模式中的枚舉?我嘗試了各種方法,但對我來說沒有多大意義。
有人可以澄清一個例子嗎?我試圖找出答案,因爲解決方案可能是有趣的,並有助於保持代碼清潔。
這是從文章中,我談論的摘錄:
Observer模式
有是在雨燕造型觀察各種方式。 (...)didSet語法可以輕鬆實現簡單的觀察。枚舉可以在這裏使用,以便使觀察對象發生的變化類型更加清晰。想象一下收集觀察。如果我們考慮一下,我們只有幾個可能的情況:插入一個或多個項目,刪除一個或多個項目,更新一個或多個項目。這聽起來像一個枚舉工作:
enum Change {
case Insertion(items: [Item])
case Deletion(items: [Item])
case Update(items: [Item])
}
然後,觀察對象可以接受的一個非常乾淨的方式發生了什麼具體的信息。這可以通過添加oldValue和newValue來輕鬆擴展。
感謝
謝謝。這澄清了很多。你說他們提議的枚舉將被用來包含集合中正在觀察到的變化的細節。你能舉出一個簡單的例子:「在集合**中觀察到的變化」? –
我會想象一個控制器,或者一個包裹的集合,它可以被編輯並允許觀察者。這些編輯可能會批處理。當編輯完成時,觀察員會收到通知。一個符合協議的觀察者列表,該協議有一個func collectionChanged(collection:XCollection,change:ChangeEnum)'',其中'XCollection'是控制器或包裝類。 – Wain