0

我有一个来自 plist 的数组,每个值都包含一个键和一个字符串以及一个从在线 json 文件获取的辅助数组。我想根据第一个数组中的键对辅助数组进行排序。

我想实现这样的目标:

数组 1:项目 0 - 欧元 - 字符串项目 1 - 美元 - 字符串项目 2 - 澳元 - 字符串等

数组 2:第 0 项 - AUD - 123.242 第 1 项 - 欧元 - 535.123 第 2 项 - 美元 - 325.646 等

我在两者上都有相同的键索引,但我想根据 array1 中键索引的顺序从 array2 中获取键索引的值。

我在网上进行了研究,但找不到合适的解决方案,我可以理解如何实现它。

我该如何实施?

这是 plist 文件 - https://gist.github.com/iulianvarzaru/11c400ba1edf4a165082

和 json 文件 - https://gist.github.com/iulianvarzaru/1915e02a9201c57f49b3

4

3 回答 3

1

鉴于您链接到的 JSON 文件不包含数组而是字典,您可以简单地array1从 plist 文件中迭代。该数组的每个元素都是一个带有“Cod”键和“Descriere”键的字典。获取“Cod”键的值,然后简单地将该值用作 JSON 文件中字典的键。

NSDictionary* jsonFileDict = ...;
NSDictionary* jsonFileInnerDict = jsonFileDict[@"rate"];
for (NSDictionary* dict in array1)
{
    NSString* code = dict[@"Cod"];
    NSNumber* jsonNumber = jsonFileInnerDict[code];
    // Do something with jsonNumber
}
于 2013-11-09T16:56:27.710 回答
0

您正在处理响应中的字典,而不是数组。

你应该把它转换成类似的东西

{ 
    @"currency": @"EUR",
    @"value": 123.45
}

创建并对其进行排序

NSArray *keys = @[@"EUR",@"USD",@"AUD"];
NSDictionary *dict = @{@"AUD":@(123.242), @"EUR": @(535.123), @"USD": @(325.646)};
NSMutableArray *result = [@[] mutableCopy];

for (NSString *key in keys) {
    [result addObject:@{@"value":dict[key], @"currency": key}];
}
NSLog(@"%@", result);

(
        {
        currency = EUR;
        value = "535.123";
    },
        {
        currency = USD;
        value = "325.646";
    },
        {
        currency = AUD;
        value = "123.242";
    }
)

或者编写一个可以处理这些信息的模型类。

于 2013-11-09T17:04:30.850 回答
0

听起来这些是键值对,在这种情况下,您可以将其转换为 Map,然后进行直接查找。

如果您可以将 JSON 文件作为 JSON 进行操作,那么它会减少转换,但可能不是最有效的实现。

注意事项:

  1. 此方法假定您不会有键重载(这在数字数组中是可能的,但在地图中是不可能的)
  2. 这需要从一种数据结构到另一种数据结构的转换

编辑:(由于OP增加了信息)。

您收到的 JSON 文件不包含数组,它包含一个对象。因此,所有值都是直接查找的。因此,您可以在 Obj-c 中遍历您的数组,并直接访问 JSON 中的相应值。

抱歉缺少实际的代码示例。

于 2013-11-09T16:24:43.167 回答