Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift3 RxSwift简单后台任务示例_Swift3_Rx Swift - Fatal编程技术网

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 3RxSwift 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 3RxSwift 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()
        }
    }
}