2016-12-03 6 views
3

カスタムクラスをUserDefaultsに保存することはできません。しかし、私のコードでは、GMSPlaceインスタンスをuserdefaultsに保存して取得するのが非常に便利です。ユーザーのデフォルトからGMSPlaceインスタンスを取得する

理想的には、私は以下の機能を思い付くたい:

func save(selectedPlace: GMSPlace) {} 
func getSelectedPlace() -> GMSPlace? {} 

私はNSDataのに変換したり、辞書に変換しなければならないと仮定します。私は2番目の選択肢に行きましたが、GMSPlaceインスタンスを辞書から取り出す方法はわかりません。つまり、今のところ、私はこれを行うには唯一の方法を知っている:

func save(selectedPlace: GMSPlace) {} 
func getSelectedPlace() -> [String: Any]? {} 

答えて

1

あなたはNSEncoding & NSDecodingプロトコルに確認していないため、GMSPlaceクラスのuserdefaultでGMSPlaceを保存することはできません。

しかし、GMSPlaceクラスのすべてのパラメータを含むNSDictionaryを作成し、NSDictionaryをNSUserdefaultsに新しく作成することで保存できます。

agianにアクセスすると、NSUserdefaultからdictinaryを取得し、GMSPlaceクラスオブジェクトを作成します。

実装でクエリがある場合はお知らせください。

+0

お返事ありがとうございます。私はそれが正しい答えだと思う。私はより単純なものを願っていても、今は少なくとも –

+0

のプロトコルを暗号化しています。私は最終的にGMSPlaceから必要なプロパティのみを使用する独自のPlaceクラスを実装することを選択しました。次に、このクラスのNSCodingを実装します。私はそれをよりエレガントに感じます。また、GMaps SDKが進化する場合や、別のマップサービスに切り替える場合に便利なコード全体をGMSPlaceで抽象化することもできます。 –

関連する問題