【问题标题】:Merging a complex data structure of NSArray and NSDictionary合并 NSArray 和 NSDictionary 的复杂数据结构
【发布时间】:2014-05-02 17:47:43
【问题描述】:

我有以下数据结构Snapshot,它是嵌套数组和字典的组合:

{"Snapshot": {
    "ask": [
        {
            "price": 101.42,
            "size": 7
        },
        {
            "price": 101.85,
            "size": 5
        }
    ],
    "bid": [
        {
            "price": 89.72,
            "size": 79
        },
        {
            "price": 89.71,
            "size": 158
        }
    ]
}}

上面的现有结构应该由以下字典/数组结构中的价格和大小条目更新:

{"Refresh": {
    "ask": [],
    "bid": [
        {
            "price": 89.71,
            "size": 666
        }
    ],
}}

在此示例中,具有 price: 89.71bid 商品的值 size 应从 158 更新为 666。如果价格尚不存在,则具有价格和尺寸的新商品应添加刷新数据结构。如果size = 0,则应删除价格和尺寸项。

我曾尝试使用 addEntriesFromDictionaryaddObjectsFromArray 方法来做到这一点,但确实找到了解决问题的方法。

最快的方法是什么? 您建议如何合并这两种数据结构?

谢谢!

【问题讨论】:

  • 展示你所拥有的。解释您在使用代码时遇到的问题。

标签: ios objective-c merge nsarray nsdictionary


【解决方案1】:

假设字典被命名为快照和刷新...

snapshot[@"Snapshot][@"bid"] = [snapshot[@"Snapshot][@"bid"] arrayByAddingObjectsFromArray:refresh[@"Refresh"][@"bid]];

更复杂的数组联合只需要更多代码。如果您希望 price 成为唯一键,为什么不将其设为键?

【讨论】:

  • 哦,但您说的是组合数组的决策逻辑。有一个 @distinctUnionOfArrays 集合运算符,您可以像 @distinctUnionOfArrays.price 一样使用,但我认为您不能使用这种键路径,除非 price 是两个数组中对象的属性。
  • 你是对的,一个不错的选择是让price成为关键。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多