#swift
#swift
Вопрос:
Я получил какую-то ОШИБКУ, но понятия не имею.
Код здесь.
func object(for key: String) -> Observable<SwiftyJSON.JSON?> {
return Observable.create { [weak self] observer in
self?.cache?.async.object(forKey: key) { result in
guard let data = result else {
observer.onNext(nil)
observer.onCompleted()
return
}
Async.userInteractive {
var json = SwiftyJSON.JSON(data: data)
Async.main {
if let error = json.error {
observer.onError(error)
} else {
observer.onNext(json)
}
observer.onCompleted()
}
}
}
return Disposables.create()
}
}
Я использовал это https://github.com/hyperoslo/Cache .
Как я могу обменять «Результат» на «Данные»?
Ответ №1:
Result
это перечисление, которое содержит либо (успешное) значение, либо ошибку.
Итак, как и любое перечисление, вы можете использовать switch
оператор или if case let
обозначение.
if case let .success(data) = result {
// do something with data
}
// or similarly
guard case let .success(data) = result else { return }
// do something with data
Или:
switch result {
case .success(let data):
// do something with data
...
case .failure(let error):
// do something with error
Вы также можете try
получить значение из Result
, которое было бы throw
в случае ошибки:
let data = try result.get()
Комментарии:
1. Спасибо за ваш ответ. Я был раскрыт. Я использовал это ‘guard case let .value(data) = result else { return }’