RxSwift:观察对存储在数组中的项的更改

时间:2017-12-05 23:01:02

标签: swift rx-swift

我刚刚开始关注RxSwift并且是初学者。有没有办法观察数组中各个元素的变化?我有一个存储Item对象数组的对象,我希望在Item对象的任何属性发生变化时得到通知。到目前为止,我有这个:

struct Item {
  var dayOfTheWeek = Variable<Int>(1)

  init(dayOfTheWeek: Int) {
    self.dayOfTheWeek.value = dayOfTheWeek
  }
}

class ItemListener {
  var items = Variable<[Item]>([])
  var itemsUpdated: Observable<[Item]>

  init() {
    self.itemsUpdated = items.asObservable()
  }

  func queue(item: Item) {
    self.items.value.append(item)

    self.itemsUpdated.subscribe(onNext: {
        $0.forEach{
            print("dayOfTheWeek \($0.dayOfTheWeek.value)")
        }
    })
  }
}

如果我这样做

let itemListener = ItemListener()
var item = Item(dayOfTheWeek: 5)
itemListener.queue(item: item)

它会观察添加到数组中的任何项目。将项目添加到数组后,如何观察数组中每个项的状态更改?如果我更新数组中项目的dayOfTheWeek,那么ItemListener将如何获得dayOfTheWeek对项目进行更改的通知?

item.dayOfTheWeek = 2  // ItemListener wants to get notified of this update

0 个答案:

没有答案