簡體   English   中英

如何在RxSwift中觀察數組屬性的變化

[英]How to observe array property changes in RxSwift

這是我的班級:

class ViewController: UIViewController {
   var myArray : NSArray!
} 

我想每次myArray指向一個新數組時觸發一個事件,如下所示:

self.myArray = ["a"]

self.myArray = ["b"]

我試過rx_observe但失敗了,這是我的代碼:

self.rx_observe(NSArray.self, "myArray").subscribeNext { (array) -> Void in
   print(array)
}

它只是第一次發射,有什么問題?

大多數情況下,如果您控制了支持變量,則首選使用Variable來使用rx_observe

class ViewController: UIViewController {
   var myArray : Variable<NSArray>!
}

你第一次使用myArray時,你會這樣做

myArray = Variable(["a"])

然后,如果你想改變它的價值

myArray.value = ["b"]

您可以使用,輕松觀察其變化

myArray.asObservable().subscribeNext { value in
  // ...
}

如果你真的想使用rx_observe (可能是因為變量在程序的其他地方使用而你不想更改視圖控制器的API),你需要將myArray聲明為dynamic (另一個要求是托管類)是NSObject的孩子,這里UIViewController滿足這個要求)。 默認情況下,未在swift中實現KVO,並且使用dynamic確保使用objective-c運行時完成訪問,其中處理KVO事件。

class ViewController: UIViewController {
  dynamic var myArray: NSArray!
}

有關此文檔可在此處找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM