【问题标题】:Stuck with restkit mapping卡住了restkit映射
【发布时间】:2014-02-11 11:53:43
【问题描述】:

这里有restkit问题的新手:(

这是我对属于交易所和货币的交易的 json 响应:

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

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

我的交换课有两个属性

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

我的货币类有 2 个属性。

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

正确的 JSON 响应和简单的输出将是

{
    "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)

任何指点或想法将不胜感激。

感谢您的帮助。

【问题讨论】:

  • 那么您可以完全控制 JSON?您的数据模型(您想要映射到的类)和其中的关系是什么?要指定映射,您需要源(JSON)和目标(模型)...
  • 是的,我拥有完全控制权,使用 mogenrator 生成核心数据模型的底层代码。添加了实体定义。感谢您的帮助。

标签: core-data restkit


【解决方案1】:

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

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

您的图表可能会歪曲这些关系,但它们应该是相反的(所以 1:n 和 n:1,而不是 1:1)。这允许 Core Data 正确地维护关系。

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

【讨论】:

  • 抱歉我的错误,它在货币和兑换的交易方面是 n:1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-05
  • 2013-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多