坚持使用restkit映射

时间:2014-02-11 11:53:44

标签: core-data restkit

新手在这里有restkit问题:(

这是我对交易所和货币交易的json回复:

{
    "exchange": "symbol",
    "currency": "USD",
    "trades": [
        {
            "maxPrice": "684.00",
            "minPrice": "683.10",
            "price": "683.28",
            "timestamp": "1390451006",
            "volume": "1.0"
        }
    ]
}

我有一系列交易,属于在此响应的根目录中定义的交易所,交易可以是1..n。

我的交换类有2个属性

{
    "displayName": "name",
    "symbol": "symbol"
}

我的货币类有2个属性。

{
    "symbol": "$",
    "code": "USD" 
}

正确的JSON响应和easyout将是

{
    "trades": [
        {
            "maxPrice": "684.00",
            "minPrice": "683.10",
            "price": "683.28",
            "timestamp": "1390451006",
            "volume": "1.0",
            "exchange": {
                "displayName": "name",
                "symbol": "symbol"
            },
            "currency": {
                "symbol": "$",
                "code": "USD"
            }
        }
    ]
}

由于所有这些交易都属于单一交易所,而且我在JSON响应的根目录中指定了它们,我对如何在restkit中映射这些关系感到迷茫。

我的实体

Exchange
-displayName
-symbol
-trades(Exchange -->>Trade | 1:n)

Currency
-code
-symbol
-trades(Currency -->> |1:n)

Trade
-maxPrice
-minPrice
-price
-tradeDate
-volume
-currency(Trade >-->Currency |n:1)
-exchange(Trade >-->Exchange |n:1)

任何指示或想法都会真诚地受到赞赏。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

不清楚为什么你这样展示可能有不同形式的JSON。我假设它们对于不同的搜索类型请求是不同的响应。从一个响应开始,首先获得该工作的映射(可能是最后一个简单的交易列表JSON)。

您的JSON都不包含唯一标识符 - 它确实应该。这使您可以灵活地在对象之间建立连接,并确保您不会在数据存储中获得重复的对象。

您的图表可能会歪曲关系,但它们应该相互反转(因此1:n& n:1,而不是1:1)。这允许Core Data正确维护关系。

由于您的JSON全部嵌套,因此映射相对简单。如果源和目标键名称不匹配,您应该使用RKEntityMappingaddRelationshipMappingWithSourceKeyPath:mapping:(或RKRelationshipMapping)的组合。