StanwoodGroupChain
示例
要运行示例项目,请克隆存储库,然后首先从 Example 文件夹运行 pod install
。
安装
pod "StanwoodGroupChain"
使用
添加处理器
import StanwoodGroupChain
class ExampleHandler: AbstractHandler {
override func execute(_ element: ChainElement) {
/// Make a networking call, load from file, run animation and return a result
/// Access the target
let target = element.target
/// Use custom userInfo
let userInfo = element.userInfo
/// Return a response if reqruied on success
let someItem = ModelItem()
let response = ChainResponse(object: someItem)
let successResult: ChainResult = .success(response)
element.resultComplition?(successResult)
/// Return an error if requried
let error: ChainError = ChainError(message: "Something went wrong...")
let failureResult: ChainResult = .failure(error)
element.resultComplition?(failureResult)
}
}
声明链
var chain: Chain?
let handlers = [ExampleHandler(), HandlerOne(), HandlerTwo(), HandlerThree(), HandlerFour(), HandlerFive(), HandlerSix()]
chain = Chain(handlers: handlers)
实例化处理元素和启用
let handlerFour = ChainElement(type: .type(ExampleHandler.self), target: self) { (result) in
switch result {
case .failure(let error): print("Handle error, \(error.description)")
case .success(let item): print("Handle item, \(item)")
/// Call the next handler
}
}
let handlerOne = ChainElement(type: .type(HandlerSix.self), target: self) { [weak self, handlerFour = handlerFour] (result) in
guard let `self` = self else { return }
switch result {
case .failure(let error): print("Handle error, \(error.description)")
case .success(let item): print("Handle item, \(item)")
/// Call the next handler
self.chain?.handel(handlerFour)
}
}
chain?.handel(handlerOne)
许可证
StanwoodCore遵循MIT许可证。有关更多信息,请参阅LICENSE文件。