Build Status CocoaPods Compatible

ListDiff

ListDiffIGListKitIGListDiff 的 Swift 移植版本。 它是对 Paul Heckel 算法的实现,用于计算两个数组之间的差异。

动机

这个项目的动机来自于以下 挑战,我从 Ryan NystromiOSConf.SG 上的 演讲中了解到了这个挑战。

开始使用

swift package generate-xcodeproj

安装

CocoaPods

pod 'ListDiff'

Carthage

github "lxcid/ListDiff" "master"

用法

import ListDiff

extension Int : Diffable {
    public var diffIdentifier: AnyHashable {
        return self
    }
}
let o = [0, 1, 2]
let n = [2, 1, 3]
let result = List.diffing(oldArray: o, newArray: n)
// result.hasChanges == true
// result.deletes == IndexSet(integer: 0)
// result.inserts == IndexSet(integer: 2)
// result.moves == [List.MoveIndex(from: 2, to: 0), List.MoveIndex(from: 1, to: 1)]
// result.changeCount == 4

原理

在移植过程中,我做出了一些决定,我想在这里说明理由。

替代方案