[英]Save User model in UserDefaults and append stored Users to array
[英]RxSwift: observe an array stored in UserDefaults
我正在嘗試觀察我的UserDefaults
來監視對locations
更改,該locations
是CLLocationCoordinate2D
的數組。
這是我正在嘗試的:
extension UserDefaults {
var ob: Observable<[CLLocationCoordinate2D]> {
return self.rx.observe(Array.self, "locations")
}
}
但是我得到這個錯誤:
no 'observe' candidates produce the expected contextual result type 'Observable<[CLLocationCoordinate2D]>' (aka 'Observable<Array<CLLocationCoordinate2D>>
有任何想法嗎? 謝謝!
observe
將返回一個Observable
的可選元件的: Observable<[CLLocationCoordinate2D]?>
這不是一個很好的錯誤。 如果它說,這是看到什么類型你想,而不是究竟有什么預期的回報,這將有更多的幫助。
您可能會看到的一種方法是創建一個變量,然后返回它。
var ob: Observable<[CLLocationCoordinate2D]> {
let a = self.rx.observe(Array<CLLocationCoordinate2D>.self, "locations")
return a
}
您將能夠看到a
是什么類型( Observable<[CLLocationCoordinate2D]?>
),並且還會得到更好的錯誤消息:
Cannot convert return expression of type 'Observable<[CLLocationCoordinate2D]?>' (aka 'Observable<Optional<Array<CLLocationCoordinate2D>>>') to return type 'Observable<[CLLocationCoordinate2D]>' (aka 'Observable<Array<CLLocationCoordinate2D>>')
因此,更正該錯誤后,您的代碼應如下所示:
var ob: Observable<[CLLocationCoordinate2D]?> {
return self.rx.observe(Array.self, "locations")
}
盡管我建議您不要依賴類型推斷,而應明確說明數組的元素類型。 Swift經歷了一段艱難的時光:
var ob: Observable<[CLLocationCoordinate2D]?> {
return self.rx.observe(Array<CLLocationCoordinate2D>.self, "locations")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.