ClosureKit 1.0.0

ClosureKit 1.0.0

测试已测试
语言语言 SwiftSwift
许可协议 MIT
发布最新发布2020年8月
SPM支持 SPM

Denys Telezhkin 维护。



构建状态   codecov.io CocoaPod 平台   CocoaPod 版本   Carthage 兼容 MIT 许可证

{ } Kit

BlocksKit 非常棒。它允许用代码块替代乏味的代理回调和目标动作,使代码更易读,并且允许你保持在实现中的上下文中。但是随着 Swift 语言的推出,BlocksKit 中的一些部分显得不太适用。首先,很多方法都使用了 id 类型,在 Swift 中这会被桥接到 AnyObject!,这意味着在你可以为闭包中的对象编写任何代码之前,需要进行显式的强制类型转换和类型检查。其次,它不允许你使用 Swift 的结构体和枚举。

ClosureKit填补了这一空白。它为与 BlocksKit 相同的方法提供了泛型实现,这使得你可以跳过类型检查和强制类型转换,同时也可以使用纯 Swift 的枚举和结构体。

本项目并非BlocksKit的替代品。其目标是为 Swift 开发者提供更便捷的 API,类似于 BlocksKit 为 Objective-C 提供的 API。此外,ClosureKit 只依赖于 Swift 的标准库,没有其他外部依赖。

内容

功能

集合类型

Any - ck_any

验证该集合中至少有一个对象符合该块。

let collection = [1,2,3]

collection.ck_any {(element) -> Bool in return element < 0}
=> false

collection.ck_any { (element) -> Bool in return element > 2}
=> true

匹配 - ck_match

查找与提供的块匹配的第一个对象

let collection = [1,2,3]
println(collection.ck_match {(element) -> Bool in  return element > 2})
=> 3

无结果 - ck_none

验证集合中所有对象都不与块匹配。

let collection = [1,2,3]
collection.ck_none { (element) -> Bool in return element < 0 }
=> true

数组

执行选择 - ck_performSelect

过滤数组,删除所有不与块匹配的对象

var array = [1, 2, -1, -2, 3]

array.ck_performSelect { (element) -> Bool in return element > 0 }
println(array)
=> [1,2,3]

执行拒绝 - ck_performReject

过滤数组,删除所有与块匹配的对象。这是ck_performSelect的反向方法。

var array = [1,2,-1,-2,3]
array.ck_performReject { (element) -> Bool in return element < 0 }
println(array)
=> [1,2,3]

字典

执行选择 - ck_performSelect

过滤字典,删除所有与提供块不匹配的键值对。

var dictionary = [1:"a",2:"b",3:"c"]
dictionary.ck_performSelect { (key,value) -> Bool in return key > 1}
=> [2:"b",3:"c"]

执行拒绝 - ck_performReject

过滤字典,删除所有与提供块匹配的键值对。这是与 ck_performSelect 方法相反的。

var dictionary = [1:"a",2:"b",3:"c"]
dictionary.ck_performReject { (key,value) -> Bool in return key < 2}
=> [2:"b",3:"c"]

拒绝 - ck_reject

查找不符合提供块的键值对。这是 ck_select 方法的相反操作。

let dictionary = [1:"a",2:"b",3:"c"]
dictionary.ck_reject { (key,value) -> Bool in return key < 2}
=> [2:"b",3:"c"]

选择 - ck_select

查找所有匹配提供块的键值对。

let dictionary = [1:"a",2:"b",3:"c"]
dictionary.ck_select { (key,value) -> Bool in return key > 1}
=> [2:"b",3:"c"]

要求

  • iOS 8 / macOS 10.10 / tvOS 9.0 / watchOS 2.0
  • Swift 3
  • Xcode 8

安装

  • CocoaPods
   pod 'ClosureKit', '~> 1.0.0'
  • Carthage
  github "DenHeadless/ClosureKit"