本项目是 Automerge 的 Swift 实现,Automerge 是一个用于构建协作应用程序的数据结构库。Automerge 具有跨平台和跨语言特性,允许您在浏览器和原生应用程序之间提供协作支持。
API 文档 提供了此库的概述以及如何使用它。
Automerge Repo (Swift) 是一个补充库,扩展了此库的功能。它为 Apple 平台添加了可插拔的网络和存储支持,以提供更完整的“开箱即用”体验,并且已经过与 JavaScript 版本的 Automerge Repo 的测试。
开源的基于文档的 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` now contains {"colours": ["green", "red"]}
有关 API 的更多详细信息,请参阅 Automerge-swift API 文档 和其中的文章。
注意:之前有一个为 Automerge 提供 Swift 语言绑定的项目。该存储库已重命名并存档,但如果您正在寻找它,仍然可以使用。