ios - Rx swift : Return a new observable with an error

标签 ios swift rx-swift

我有一个返回 Bool Observable 的函数,这取决于它是否正常。

func test() -> Observable<Bool> {
   if everythingIsOk {
      return just(true)
   }
   return just(false) <- how can i here return a custom error to retrieve what failed?
}

最佳答案

just<E>(element: E) -> Observable<E>

返回包含单个元素的可观察序列。 相反,您应该使用类似的东西:

create<E>(subscribe: (AnyObserver<E>) -> Disposable) -> Observable<E>

Create 方法从指定的订阅方法实现创建一个可观察序列。

在你的情况下:

private let realm = try! Realm()

func save(customObject: CustomObject) -> Observable<Bool> {
    return create({ observer -> Disposable in
        do {
            try self.realm.write {
                self.realm.add(customObject, update: true)
                observer.onNext(true)
                observer.onCompleted()
            }
        } catch {
            // .Error sequence will be automatically completed
            observer.onError(NSError(domai...)
        }

        // if realm.write is sync task(by default it is, as I know) you can actually return NopDisposable
        return NopDisposable.instance
        // otherwise you should cancel write transaction in AnonymousDisposable
    })
}

AnonymousDisposable 是在您想被打断时调用的操作。假设你离开了你的 View Controller 或者应用程序需要完成服务并且你不需要再调用这个请求。它非常适合视频上传或更大的东西。您可以执行 request.cancel() ,它会在您完成后清除所有资源。这会在完成或错误时被调用。

关于ios - Rx swift : Return a new observable with an error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34351664/

相关文章:

iOS如何在 subview 处理后忽略父 View 接收触摸事件

Swift - UIPickerView selectRow 函数不采用 array.count

arrays - 延迟循环数组 - Swift

swift - 为什么 Swift 在闭包函数中使用可选参数时会抛出错误?

ios - 在得到答案之前我不能再次调用我的方法吗?

ios - 我的自定义 RxDelegateProxy 立即处理

ios - 使用动画生成插值

ios - JSON 写入中的类型无效 (__SwiftValue)

swift - Rx swift : What is the best practice to use DisposeBag?

iphone - iOS查看 'folding'动画