2
以前はRxSwiftを使用していましたが、私はもう使用したくないと判断し、すべてをBondに変換することができました。 Bond v5に新しい変更が加えられたので、私はUserDefaultsの値をどのように観察するのか分からないようです。次のコードは私に致命的なエラーを与えてしまいます。ReactiveKit Bond KVO observe UserDefaults
userDefaults.reactive
.keyPath(LocationManager.HomeLocationKey, ofType: String.self, context: .immediateOnMain)
.map(self.initLocation(from:))
.bind(to: self.homeLocation)
userDefaults
UserDefaults.standardへの参照であるとLocationManager.HomeLocationKey
文字列です。私はそれが尋ねられることを知っているので私はinitLocation
機能を以下に提供しています。その機能の下で、私は、アプリケーションの起動後に受信しているエラーを投稿します。
func initLocation(from string: String?) -> Location?
{
guard let dataString = string
else { log.warning("Location data did not exist, returning nil"); return nil }
let json = JSON.parse(dataString)
return Location(from: json)
}
エラー:
fatal error: Could not convert nil to String. Maybe `dynamic(keyPath:ofExpectedType:)` method might be of help?): file /Users/sam/Documents/iOS Apps/Drizzle/Pods/Bond/Sources/Shared/NSObject+KVO.swift, line 58
Typeを 'Optional .self、'に設定すると機能しますか? –
これは完璧に機能しました。私が正しいタイプを入れれば、確かに助けになるでしょう。自由にそれに答えると私は受け入れます:) – SamG
それはうまくいった! :) –