Automerge-swift
这个项目是Automerge的Swift实现,Automerge是一个用于构建协作应用程序的数据结构库。Automerge支持跨平台和跨语言,允许您在浏览器和原生应用之间提供协作支持。
API文档提供了这个库的概述以及如何使用它。
Automerge Repo (Swift)是一个补充库,它扩展了这个库。它为Apple平台添加了可插拔的网络和存储支持,以实现更加"功能完备"的结果,并已经与Automerge Repo的JavaScript版本进行了测试。
开源的iOS和macOS基于文档的SwiftUI应用MeetingNotes展示了如何使用Automerge构建实时协作体验。MeetingNotes基于这个库和仓库,在应用中提供了基于WebSocket和点对点的网络功能。
快速开始
在Package.swift
中添加依赖,如下例所示:
let package = Package(
...
dependencies: [
...
.package(url: "https://github.com/automerge/automerge-swift.git", from: "0.5.2")
],
targets: [
.executableTarget(
...
dependencies: [.product(name: "Automerge", package: "automerge-swift")],
...
)
]
)
现在您可以创建一个文档并使用Automerge的各种功能
let doc = Document()
let list = try! doc.putObject(obj: ObjId.ROOT, key: "colours", ty: .List)
try! doc.insert(obj: list, index: 0, value: .String("blue"))
try! doc.insert(obj: list, index: 1, value: .String("red"))
let doc2 = doc.fork()
try! doc2.insert(obj: list, index: 0, value: .String("green"))
try! doc.delete(obj: list, index: 0)
try! doc.merge(other: doc2) // `doc`现在包含{"colours": ["green", "red"]}
有关API的更多详细信息,请参阅Automerge-swift API文档及其中的文章。
注意:之前有一个为Automerge提供Swift语言绑定的项目。该仓库已被重命名并存档,但如果您需要查看,它仍然可用。