Swift3 RxSwift简单后台任务示例
我有一个方法如下Swift3 RxSwift简单后台任务示例,swift3,rx-swift,Swift3,Rx Swift,我有一个方法如下 public static func createAlbum(named: String, completion: (album: PHAssetCollection?) -> ()) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)) { }) { success, error in comp
public static func createAlbum(named: String, completion: (album: PHAssetCollection?) -> ()) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)) {
}) { success, error in
completion(album: album)
}
}
}
如何使用RxSwift执行后台任务
完整代码
首先,函数必须返回可观察值
public static func rx_createAlbum(named: String)-> Observable<PHAssetCollection?>
首先,您的函数必须返回一个可观察的值
public static func rx_createAlbum(named: String)-> Observable<PHAssetCollection?>
@XFreire的答案是正确的,但对于Swift 3和RxSwift 3.1.0我将为
PHAssetCollection添加一个扩展:
extension Reactive where Base: PHPhotoLibrary {
func createAlbum(named name: String) -> Observable<PHAssetCollection?> {
return Observable.create { observer in
self.base.performChanges({
// ...
}, completionHandler: { success, error in
if success {
// Your success logic goes here
let album = PHAssetCollection()
// ...
observer.on(.next(album))
observer.on(.completed)
} else if let error = error {
observer.on(.error(error))
} else {
// Your error type
observer.on(.error(MyErrors.Unknown))
}
})
return Disposables.create()
}
}
}
@XFreire的答案是正确的,但对于Swift 3和RxSwift 3.1.0我将为PHAssetCollection添加一个扩展:
extension Reactive where Base: PHPhotoLibrary {
func createAlbum(named name: String) -> Observable<PHAssetCollection?> {
return Observable.create { observer in
self.base.performChanges({
// ...
}, completionHandler: { success, error in
if success {
// Your success logic goes here
let album = PHAssetCollection()
// ...
observer.on(.next(album))
observer.on(.completed)
} else if let error = error {
observer.on(.error(error))
} else {
// Your error type
observer.on(.error(MyErrors.Unknown))
}
})
return Disposables.create()
}
}
}