簡體   English   中英

RxSwift:觀察存儲在UserDefaults中的數組

[英]RxSwift: observe an array stored in UserDefaults

我正在嘗試觀察我的UserDefaults來監視對locations更改,該locationsCLLocationCoordinate2D的數組。

這是我正在嘗試的:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM