OpenCombine

codecov

OpenCombine 是 Apple Combine 框架的开源实现,用于处理随时间变化的值。

此项目的主要目标是提供一个兼容、可靠且高效的实现,可以在 macOS 10.15 和 iOS 13 之前的 Apple 操作系统以及 Linux、Windows 和 WebAssembly 上使用。

该软件包的文档可以在 OpenCombine 文档 中找到

CI 状态
Compatibility tests
macOS
Ubuntu
Windows
Wasm

安装

OpenCombine 包含三个公共目标:OpenCombineOpenCombineFoundationOpenCombineDispatch (第四个目标 COpenCombineHelpers 被认为是私有的。请勿在您的项目导入它)。

OpenCombine 本身没有任何依赖项。甚至没有 Foundation 或 Dispatch。如果您想将 OpenCombine 与 Dispatch 一起使用 (例如,将 DispatchQueue 用作 debouncereceive(on:) 等运算符的 Scheduler),您需要同时导入 OpenCombineOpenCombineDispatch。Foundation 也是如此:如果您想使用例如 NotificationCenterURLSession 发布者,您还需要导入 OpenCombineFoundation

如果您为多个平台开发代码,您可能会发现导入 OpenCombineShim 模块更方便。它在 Apple 平台上(如果可用)有条件地重新导出 Combine,并在其他平台上导出所有 OpenCombine 模块。

Swift 包管理器
Swift 包

要将 OpenCombine 添加到您的 SwiftPM 包,请将 OpenCombine 包添加到您的 Package.swift 文件中的包和目标依赖项列表中。OpenCombineDispatchOpenCombineFoundation 产品目前在 WebAssembly 上不受支持。如果您的项目专门以 WebAssembly 为目标,则应从依赖项列表中省略它们。如果它以包括 WebAssembly 在内的多个平台为目标,则仅在非 WebAssembly 平台上依赖它们,使用 条件目标依赖项

dependencies: [
    .package(url: "https://github.com/OpenSwiftUIProject/OpenCombine.git", from: "0.14.0")
],
targets: [
    .target(
        name: "MyAwesomePackage",
        dependencies: [
            "OpenCombine",
            .product(name: "OpenCombineFoundation", package: "OpenCombine"),
            .product(name: "OpenCombineDispatch", package: "OpenCombine")
        ]
    ),
]
Xcode

OpenCombine 也可以直接在您的 Xcode 项目中作为 SwiftPM 依赖项添加 (需要 Xcode 11 或更高版本)

要做到这一点,请打开 Xcode,使用 FileSwift PackagesAdd Package Dependency…,输入 仓库 URL,选择最新的可用版本,并激活复选框

Select the OpenCombine and OpenCombineDispatch targets

调试器支持

文件 opencombine_lldb.py 定义了一些 lldb 类型摘要,以便更轻松地进行调试。这些类型摘要改进了 lldb 和 Xcode 显示某些 OpenCombine 值的方式。

要使用 opencombine_lldb.py,请找出它的完整路径。假设完整路径是 ~/projects/OpenSwiftUIProject/opencombine_lldb.py。然后将以下语句添加到您的 ~/.lldbinit 文件中

command script import ~/projects/OpenSwiftUIProject/opencombine_lldb.py

目前,opencombine_lldb.py 为以下类型定义了类型摘要

贡献

请参阅 CONTRIBUTING.md