Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios coredatajson映射_Ios_Json_Core Data_Mapping - Fatal编程技术网

Ios coredatajson映射

Ios coredatajson映射,ios,json,core-data,mapping,Ios,Json,Core Data,Mapping,在我的api中,我有一个类似这样的JSON输出 { "restaurants": [{ "Restaurant": { "id": "3", "name": "...", "slug": "...", "phone": "2161234567", "address": "...", "city_id": "34", "county_id": "426", "di

在我的api中,我有一个类似这样的JSON输出

{
"restaurants": [{
    "Restaurant": {
        "id": "3",
        "name": "...",
        "slug": "...",
        "phone": "2161234567",
        "address": "...",
        "city_id": "34",
        "county_id": "426",
        "discount_type_id": null,
        "discount": "",
        "people_limit": "2",
        "reservations_required": false,
        "lat": "41.015608",
        "lon": "28.934834",
        "about": "...",
        "logo": "...",
        "logo_dir": "3",
        "photo_1": "...",
        "photo_2": null,
        "photo_3": null,
        "photo_dir": "3",
        "created": "2012-11-30 16:30:21",
        "modified": "2012-11-30 20:43:50",
        "deleted": true
    },
    "AvailabilityRestriction": [{
        "id": "1",
        "title": "...",
        "AvailabilityRestrictionRestaurant": {
            "id": "28",
            "restaurant_id": "3",
            "availability_restriction_id": "1"
        }
    }],
    "CuisineTag": [{
        "id": "3",
        "name": "...",
        "CuisineTagRestaurant": {
            "id": "47",
            "restaurant_id": "3",
            "cuisine_tag_id": "3"
        }
    }]
},

...
}
这家餐厅有很多美食标签和供应限制。还有一张城市表。。。同步它们的最佳方式是什么

我必须首先同步城市、美食标签和供应限制,然后在创建餐厅时,我将匹配它们?这条路对吗


谢谢。

我会这样做

您应该在餐厅对象中拥有所有“餐厅”属性(即休息、烹饪标签)

下面是一个例子:

{
    "Restaurants" : [
        { 
            "id" : "3",
            "name" : "...",
            "slug" : "...",
            "phone" : "2161234567",
            "address" : "...",
            "city_id" : "34",
            "county_id" : "426",
            "discount_type_id" : null,
            "discount" : "",
            "people_limit" : "2",
            "reservations_required" : false,
            "lat" : "41.015608",
            "lon" : "28.934834",
            "about" : "...",
            "logo" : "...",
            "logo_dir" : "3",
            "photo_1" : "...",
            "photo_2" : null,
            "photo_3" : null,
            "photo_dir" : "3",
            "created" : "2012-11-30 16:30:21",
            "modified" : "2012-11-30 20:43:50",
            "deleted" : true,
            "AvailabilityRestrictions" : [
                {
                    "id" : "1",
                    "title" : "..."
                },
                {
                    "id" : "2",
                    "title" : "..."
                }
            ],
            "CuisineTags" : [
                {
                    "id" : "3",
                    "name" : "..."
                }
            ]
        }
    ]
}
也要去掉“餐馆”的对象,这是不必要的。如果我有一个叫做餐馆的数组。我只想把餐馆放进去/从里面拿出来

我想你的问题还有很多,但我很难理解你需要什么。您是否在谈论如何在核心数据中建立它们之间的关系

如果您希望在cruisine标记和cities或其他我认为最好的方法之间设置关系,因为您可以循环JSON响应,如果其中一个属性是列表,则可以确定列表并获取正确的托管对象并创建关系


不过,为了清楚起见,您应该将这些城市、预定义的邮轮标签保留在不同的请求中。您希望API保持简单和灵活。

是的,现在我正尝试像这样重新格式化JSON。CoreData会自动将字段与此格式匹配吗?那么“城市”表呢?如何匹配城市id?首先阅读以下内容:并充分理解它。您不希望API的更改破坏应用程序。如果您对核心数据不熟悉,还应该查看
Magical Record
,阅读本文以了解如何正确执行线程,谢谢。还有一个问题是;创建新的coredata对象(我已同步Cities实体)时,如何将city与Cities managedobject进行匹配?我将添加一个唯一的id,您可以使用该id获取city managed对象并设置餐厅与城市的关系。使用神奇的记录抓取方法非常简单:
[City findFirstByAttribute:@“uid”With value:idOfCity]