0

Web サービスから JSON データを取得し、Magical Record を使用して Core Data に保存しようとしています。Saul Moraによる素晴らしい投稿 (ドキュメントのみ?) を読みましたが、エンティティ内のすべてのデータを取得するために何をする必要があるのか​​ まだよくわかりません。

Web サービスが返す JSON は次のとおりです。

{
"ApiVersion": 4,
"AvailableFileSystemLibraries": [
    {
        "Id": 10,
        "Name": "Movie Shares",
        "Version": "0.5.4.0"
    },
    {
        "Id": 11,
        "Name": "Picture Shares",
        "Version": "0.5.4.0"
    },
    {
        "Id": 5,
        "Name": "Shares",
        "Version": "0.5.4.0"
    },
    {
        "Id": 9,
        "Name": "Music Shares",
        "Version": "0.5.4.0"
    }
],
"AvailableMovieLibraries": [
    {
        "Id": 3,
        "Name": "Moving Pictures",
        "Version": "0.5.4.0"
    },
    {
        "Id": 7,
        "Name": "MyVideo",
        "Version": "0.5.4.0"
    }
],
"AvailableMusicLibraries": [
    {
        "Id": 4,
        "Name": "MyMusic",
        "Version": "0.5.4.0"
    }
],
"AvailablePictureLibraries": [
    {
        "Id": 8,
        "Name": "Picture Shares",
        "Version": "0.5.4.0"
    }
],
"AvailableTvShowLibraries": [
    {
        "Id": 6,
        "Name": "MP-TVSeries",
        "Version": "0.5.4.0"
    }
],
"DefaultFileSystemLibrary": 5,
"DefaultMovieLibrary": 3,
"DefaultMusicLibrary": 4,
"DefaultPictureLibrary": 0,
"DefaultTvShowLibrary": 6,
"ServiceVersion": "0.5.4"
}

そのデータを保存したいエンティティは次のようになります。

エンティティ

Serverと 1 対 1 の関係を持つエンティティもありServerInfoます。

私がしたいこと:

  • 基本データ (ApiVersion など) を ServerInfo に格納します。これは私がすでに仕事を始めました。
  • 各オブジェクトを AvailableXYLibraries にBackendLibrary( から 1:n の関係でServerInfo) 格納します。
    • AvailableXYLibraries の XY 部分に基づいて設定typeします (たとえば、AvailableMovieLibraries の「movie」)。
    • defaultLibraryこのライブラリが によって参照されている場合は、true に設定しますDefaultXYLibrary
    • providerId同じ数値 ID を持つ BackendLibraries を持つことができるサーバーが複数あるため、servername + LibraryId に設定します。

これはマジカルレコードで可能ですか?いくつかのインポートフックを実装し、いくつかのユーザー情報キーを設定する必要があると思いますが、私が読んだすべてでは、どのユーザー情報キーをどこに設定するか、またはどのメソッドをどこでどのように実装するかがわかりません。

これが理にかなっており、ヒントを教えていただければ幸いです:)ありがとう!

4

1 に答える 1

0

このデータの構造は、Core Data モデルとはかなり異なります。あなたがしなければならない可能性が最も高いのは、辞書を少し繰り返すことです。つまり、さまざまなライブラリ データのコレクションがあります。FileSystemLibraries、AvailableMovieLibraries など。これらのキーから配列を取得し、記事で説明したようにエンティティをマップする必要があります。プロセスを開始するには、電話する必要があります

[BackendLibrary importFromArray:arrayFromDownloadedDictionary];

arrayFromDownloadedDictionary は、投稿したサンプル辞書の各配列です。配列を MagicalRecord に渡し、適切なフィールド マッピングを提供すると、MagicalRecord はその時点ですべてのエンティティをインポートして作成します。

「Id」を BackendLibrary.id に、「Name」を BackendLibrary.name に、「Version」を BackendLibrary.version にマップしていることを確認してください。

于 2013-08-13T21:23:13.480 に答える