Automerge-swift

本项目是 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 语言绑定的项目。该存储库已重命名并存档,但如果您正在寻找它,仍然可以使用。