PublisherKit 4.0.2

PublisherKit 4.0.2

Raghav Ahuja 维护。



Publisher Kit

Platforms Languages Swift Package Manager compatible Carthage compatible CocoaPods Compatible

概览

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)

还包含一个示例项目。

交流

  • 如果发现错误或有功能请求,请打开一个问题。
  • 如果您想贡献(一些测试将会很好),请提交一个拉取请求。

谢谢 ;)