Publisher Kit
概览
PublisherKit提供一个声明式Swift API,用于处理随时间发生的异步事件。这是Apple的Combine Framework的开放源代码版本,并添加了许多其他功能。
此项目的目标是提供一个兼容、可靠且高效的Combine Framework实现,可以在低于macOS 10.15、iOS 13、tvOS 13和watchOS 6的Apple操作系统中使用。
要了解有关Combine Framework的更多信息,请参阅Apple的文档这里。
支持的平台
- Xcode 11及以上
部署目标
- iOS 8及以上
- macOS (OS X) 10.10及以上
- tvOS 9及以上
- watchOS 3及以上
安装
Swift 包管理器
要使用 Swift 包管理器 将 PublisherKit 集成到项目中,您可以在 Xcode(11 及以上版本)中将库作为依赖项添加 - 请参阅文档。包仓库的 URL 是
https://github.com/ragzy15/PublisherKit.git
或者,您可以在 Package.swift
文件中将 PublisherKit 作为依赖项添加。例如
// swift-tools-version:5.1
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "YourPackage",
products: [
.library(
name: "YourPackage",
targets: ["YourPackage"]),
],
dependencies: [
.package(url: "https://github.com/ragzy15/PublisherKit.git", from: "4.0.2"),
],
targets: [
.target(
name: "YourPackage",
dependencies: ["PublisherKit"]),
]
)
您可以使用 Xcode 内置的 Swift 包管理器安装,或者克隆仓库并将子项目添加到您的项目中。
CocoaPods
CocoaPods 是 Cocoa 项目的依赖项管理器。
如果您还没有安装 Cocoapods gem,请运行以下命令
$ gem install cocoapods
要使用 CocoaPods 将 PublisherKit 集成到 Xcode 项目中,请在您的 Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!
pod 'PublisherKit', '~> 4.0.2'
然后,运行以下命令
$ pod install
Carthage
Carthage 是一个去中心化的依赖项管理器,它可以自动将框架添加到您的应用程序中。
您可以使用以下命令使用 Homebrew 安装 Carthage
$ brew update
$ brew install carthage
要使用 Carthage 将 PublisherKit 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它
github "ragzy15/PublisherKit"
使用方法
searchTextField.textDidChangePublisher
.debounce(for: .milliseconds(300), scheduler: DispatchQueue.main)
.compactMap { (text) -> String? in
text.isEmpty ? nil : text
}
.removeDuplicates()
.flatMap { (text) -> AnyPublisher<SearchResults, Never> in
self.search(with: text)
}
.receive(on: DispatchQueue.main)
.sink { (results) in
print(results)
}
.store(in: &cancellables)
还包含一个示例项目。
交流
- 如果发现错误或有功能请求,请打开一个问题。
- 如果您想贡献(一些测试将会很好),请提交一个拉取请求。
谢谢 ;)