1

我有一个与Bond 框架功能MutableObservableArray绑定的对象。observeNext在应用程序第一次打开时,我从用户默认值中获取数组并将其插入到这个空数组中。

我的问题是,在我将元素插入数组后,observeNext函数调用了三次而不是一次。可能是什么问题?

var list = MutableObservableArray<Task>([])

_ = self.list.observeNext(with: { element in
        if element.diff.count != 0 {
            if element.diff.deletes.count >= 1 && element.collection.count == 0 {
                self.restoreUserDefaults(with: false)
            } else {
                self.saveListToUserDefaults(list: element.collection)
            }
        }
    })

插入功能:

if let savedTask = userDef.object(forKey: self.userDefaultsKeyForList) as? Data {
    let decoder = JSONDecoder()
    if let loadedList = try? decoder.decode([Task].self, from: savedTask) {
        self.list.batchUpdate({ (a) in
            a.insert(contentsOf: loadedList, at: 0)
        })
    }
}

编辑:我认为当它第一次用它初始化数组时,[]它也会进入observeNext。正常吗?

4

0 回答 0