ReactiveKit:如何获取ObservableCollection的已更改条目的值?

时间:2016-05-14 15:40:20

标签: swift reactivekit

我正在使用ReactiveKit 1.x.它有一个非常有用的ObservableCollection<T>,它允许您监视集合的更改。就我而言,我正在使用Dictionary<String,String>

ObservableCollection生成类型为CollectionEventChange<T>的事件,它包含insertupdatedelete的属性。对于字典,这些是DictionaryIndex<String,String>

为了检查deleteupdate条目的内容,我似乎需要保留对前一个集合的引用。

是否可以使用这些属性中列出的元素在事件的collection属性中查找已更改的条目?

我错过了什么吗? (我想解决方案可能与ReactiveKit无关,只是一般使用Swift Dictionaries。)

1 个答案:

答案 0 :(得分:5)

我认为你应该使用let collection = ObservableCollection(["key": "value"]) collection.zipPrevious().observe { (old, new) in guard let old = old else { return } // `old == nil` on first event for index in new.deletes { let value = old.collection[index] print("Deleted \(value).") } } 方法来获取上一个事件,并从中获取之前的事件。

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="320" height="86" viewBox="0 0 320 86">
    <defs>
        <style type="text/css">
            .cls-1 {
                fill: transparent;
                fill-rule: evenodd;
                stroke: #fff;
                stroke-width: 6px;
            }
        </style>
        <clipPath id="clip">
            <use xlink:href="#cls-1-path"/>
        </clipPath>
    </defs>
    <path d="M319.604,36.098 C319.409,...5.551 103.736,5.687 103.192,5.881 Z" class="cls-1" id="cls-1-path" clip-path="url(#clip)"/>
</svg>