2017-02-27 9 views
1

私は3年以上前にObj CとNSUserDefaults(NSCoding/NSKeyed Archiver)を使ってデータを保存するためのアプリを開発しました。数か月前に、私はそのアプリを再設計し、今度はSwift 3とCore Dataを使ってアプリを再開発するのに最適な時期だと思った。アプリケーションは完成しましたが、このパズルの最後の部分は、私の古い保存データ(NSUserDefaults)を新しいCoreDataエンティティに変換する方法です。NSUserDefaultsをCoreDataに変換する方法

移行のすべての例は、データベースの古いバージョン(CoreData)から来ているように見え、新しいものを追加しているようです。チュートリアルや私がやろうとしていることの出発点を見つけるのが難しいです。私はそれが前に、おそらく何千回も行われていると確信していますが、私はそれに関する事例や文書を見つけることができません。

私はチュートリアルや同様のプロジェクトで正しい方向に私を指すことができる誰かが望んでいました。

+0

なぜ誰かがこれを投票しますか?私がトピックで読んだ本やLyndaやUdemyからチェックアウトしたオンラインコースをリストアップしてもらいたいですか?私はこの話題に関する研究の分担をしてきました。私は必要なものを見つけられません。それがあなたを混乱させるなら、ごめんなさい。 – icekomo

+0

開始点は、Xcode Core Dataテンプレートで提供されるコードです。オブジェクトモデルの構造は、ユーザーのデフォルト構造に強く依存します。 – vadian

+0

なぜNSUserDefaultsからコアデータへの移行ガイドがありますか? NSUserDefaultは、小さくてシンプルで、独立したデータのビットであり、本質的に同質ではない。 NSUserDefaultsはすべての辞書の後にあります。コアデータ内のデータをモデル化する方法についてのガイドがありますが、NSUserDefaultsから移行するためのガイドはありません。もし私が私のパイの帽子を食べるならば。 – Gruntcakes

答えて

2

非常に一般的な状況ではないので、ガイドを見つけられないのは驚きではありません。ユーザーのデフォルトとコアデータは、2つの異なる目的を果たします。したがって、一方から他方に移行することは珍しいことです。

  1. 、あなたのデータがコアデータのために理にかなっていると仮定すると

    は、新しいコアデータモデルを作成し、データを表現するための1つの以上のエンティティを追加します。

  2. データを使用する前に、アプリの起動時に移行してください。

移行プロセスは次のようになります:

  1. データはユーザデフォルトに存在するかを確認します。
  2. そうなら、それを読んで適切な管理オブジェクトを作成してそれを表現してください。これらの新しいオブジェクトの属性は、ユーザーのデフォルト値に基づいて設定します。
  3. ユーザーのデフォルトからデータを削除します。次回は、ステップ1で新しい移行が開始されません。

これを行うコードはすべてカスタムですが、それほど難しいものではありません。

+0

トムに感謝します。 – icekomo

関連する問題