当前位置: 首页 > 软件库 > iOS代码库 > 其他(Others) >

SwiftTask

授权协议 MIT
开发语言 Swift
所属分类 iOS代码库、 其他(Others)
软件类型 开源软件
地区 不详
投 递 者 董新觉
操作系统 iOS
开源组织
适用人群 未知
 软件概览

SwiftTask 是 Promise + progress + pause + cancel,使用 SwiftState (状态机)。

例子:

基本的

//定义任务
let task = Task < FloatString,NSError > {进展,实现,拒绝,

    播放器。doSomethingWithProgress({(progressValue浮动
        进展(progressValue)//可选
    },完成:{(价值:NSData的错误:NSError 
        ,如果错误==   {
             履行 OK )
        }
        其他 {
             拒绝(错误)
        }
    })

    //暂停/恢复/取消配置(可选)
    配置。暂停 = {[ 玩家]  
        播放器暂停()
    }
    配置。简历 = {[ 玩家]  
        播放器简历()
    }
    配置。取消 = {[ 玩家]  
        播放器取消()
    }

}

//设置成功与失败
任务。success {(valueString->  Void  in 
    //做一些有价值的事情
}。失败 {(错误:NSError isCancelled布尔- >  虚空 
    //做拒绝错误的东西
}

//您可以在任务定义之外调用已配置的操作
任务。暂停()
任务。简历()
任务。取消()

请注意,它player具有以下方法,可以很好地与配合使用SwiftTask

  • doSomethingWithProgress(_:completion:) (进度回调为可选)
  • pause() (可选的)
  • resume() (可选的)
  • cancel() (可选的)

最好的例子之一是Alamofire(网络库),如下所示。

使用Alamofire

typealias  进度 =(bytesWritten:Int64,totalBytesWritten:Int64,totalBytesExpectedToWrite:Int64typealias  AlamoFireTask  = Task <Progress,String,NSError>

//定义任务
let task = AlamoFireTask {进展,完成,拒绝,

    Alamofire。下载.GET http://httpbin.org/stream/100 目标位置:某处)
    。进步 {bytesWritten,totalBytesWritten,totalBytesExpectedToWrite 

        进度((作为进度的(bytesWritten,totalBytesWritten,totalBytesExpectedToWrite))

    }。响应 {请求,响应数据,误差

        如果 错误=错误{
             拒绝(错误)
             返回
        }

        完成确定)

    }

    返回
}

//设置进度,然后
任务。progress {(oldProgress:Progress newProgress:Progress)

    的println\(newProgress。bytesWritten 的println\(newProgress。totalBytesWritten 的println\(newProgress。totalBytesExpectedToWrite )

}。然后 {(价值字符串errorInfo中:AlamoFireTask ERRORINFO - >  虚空 
    //确实与实现价值的东西或者拒绝errorInfo中
}