0

我目前正在使用 plist 文件,但打算在最终构建后端时切换到 json。所以目前我的 plist 是一个包含一堆字典的数组。

我想使用这些信息来创建一个新数组,其中只包含具有特定值的字典。

例如。我的 plist 包含一堆位置,如下所示:
key: location value:example place name here
key: type value:indoor

我想构建一个仅包含那些将“室内”设置为类型值的数组。然后可能还有第二个包含所有“户外”位置。

这样做的最佳方法是什么,或者我可以被引导到某种教程。

谢谢。

4

2 回答 2

1

您真正需要做的就是将数组排序为两个数组。我没有看到可以为您执行此操作的直接方法。我的建议是对数组使用快速枚举,并有条件地将其分成两个新数组。

NSMutableArray *locations = [[NSMutableArray alloc] init];
NSMutableArray *type = [[NSMutableArray alloc] init];

for (NSDictionary *dict in MyPlistArray) {
    if ([dict valueForKey:@"locationKey"]) {
        [locations addObject:dict];
    } else if ([dict valueForKey:@"typeKey"]) {
        [type addObject:dict];
    }
}

您可能需要使用不同的方法来确定将哪个键放入每个数组中,但您大致了解。

另外我假设您希望字典数组在之后保留,因此您可以将它们设置为属性而不是局部变量。

于 2013-09-17T00:48:37.603 回答
1

只需循环遍历您的数组并将符合条件的字典添加到新数组中。

NSMutableArray *arrayIndoor = [NSMutableArray array];
NSMutableArray *arrayOutdoor = [NSMutableArray array];
NSString *type;
for (NSDictionary *dict in arrayPList) {
    type = [dict objectForKey:@"type"];
    if ([type isEqualToString:@"indoor"]) 
        [arrayIndoor addObject:dict];
    else if ([type isEqualToString:@"indoor"]) 
        [arrayOutdoor addObject:dict];
}
于 2013-09-17T00:48:45.593 回答