0

我正在从 Web 服务获取 JSON 数据,并尝试将其存储在带有 Magical Record 的核心数据中。我阅读了 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

我想做的事:

  • 在 ServerInfo 中存储基本数据(ApiVersion,...)。这个我已经开始工作了。
  • 将每个对象存储在 AvailableXYLibraries 中BackendLibrary(来自 的 1:n 关系ServerInfo)。
    • 根据 AvailableXYLibraries 的 XY 部分设置type,例如 AvailableMovieLibraries 的“电影”。
    • defaultLibrary如果此库被 引用,则设置为 true DefaultXYLibrary
    • 设置providerId为 servername + LibraryId,因为有多个服务器可以拥有具有相同数字 ID 的 BackendLibraries。

用魔法唱片可以吗?我想我需要实现一些导入钩子并设置一些用户信息键,但是我读到的所有内容并没有真正告诉我在哪里设置什么用户信息键或在哪里以及如何实现哪种方法。

我希望这是有道理的,你可以给我一些提示:) 谢谢!

4

1 回答 1

0

此数据的结构与您的核心数据模型有很大不同。您最有可能要做的是在字典上进行一些迭代。也就是说,有各种图书馆数据集合,例如。FileSystemLibraries、AvailableMovieLibraries 等。您必须从这些键中取出数组,然后按照我在文章中的描述映射您的实体。为了启动该过程,您必须致电

[BackendLibrary importFromArray:arrayFromDownloadedDictionary];

其中 arrayFromDownloadedDictionary 是您发布的示例字典中的每个数组。将数组提供给 MagicalRecord 并提供正确的字段映射后,MagicalRecord 将在此时导入并为您创建所有实体。

确保将“Id”映射到 BackendLibary.id,将“Name”映射到 BackendLibrary.name,将“Version”映射到 BackendLibrary.version

于 2013-08-13T21:23:13.480 回答