StanwoodGroupChain 1.0.2

StanwoodGroupChain 1.0.2

TalZTal Zion 维护。



  • stanwood

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文件。