ios - 从另一个 NSDictionary 获取 NSArray,其中包含原始键集的子集

标签 ios nsarray nsdictionary

从 NSDictionary 的 NSArray 中获取的聪明方法是什么:

[
{
Key1: Value1,
Key2: Value2,
Key3: Value3,
Key4: Value4
},
{
Key1: Value11,
Key2: Value12,
Key3: Value13,
Key4: Value14
},
{
Key1: Value21,
Key2: Value22,
Key3: Value23,
Key4: Value24
}
]

NSDictionary 的另一个 NSArray,其中包含原始键集的子集。例如:

[
    {
    Key1: Value1,
    Key3: Value3
    },
    {
    Key1: Value11,
    Key3: Value13
    },
    {
    Key1: Value21,
    Key3: Value23
    }
    ]

谢谢。

最佳答案

冒昧地创建了一个初始数组来工作......

NSArray* allKeys = @[@"key1",@"key2",@"key3",@"key4",@"key5"];
NSArray* allObjs = @[@"a",@"b",@"c",@"d",@"e"];
NSMutableArray* originalArray = [NSMutableArray arrayWithCapacity:4];
for (int i=0; i<4; i++) {
    NSRange subRange = NSMakeRange(0, i+1);
    [originalArray addObject:[NSDictionary dictionaryWithObjects:[allObjs subarrayWithRange:subRange] forKeys:[allKeys subarrayWithRange:subRange]]];
}
NSLog(@"origianl array = %@",originalArray);

NSArray* keys = @[@"key1",@"key3"];
__block NSMutableArray* newArr = [NSMutableArray arrayWithCapacity:4];
[originalArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    [newArr addObject:[NSDictionary dictionaryWithObjects:[obj objectsForKeys:keys notFoundMarker:[NSNull null]] forKeys:keys]];
}];

NSLog(@"new array = %@",newArr);

给出了之前和之后的以下内容:

2013-09-16 13:20:14.129 GammonPos[910:11303] origianl array = (
    {
    key1 = a;
},
    {
    key1 = a;
    key2 = b;
},
    {
    key1 = a;
    key2 = b;
    key3 = c;
},
    {
    key1 = a;
    key2 = b;
    key3 = c;
    key4 = d;
}
)
2013-09-16 13:20:14.131 GammonPos[910:11303] new array = (
    {
    key1 = a;
    key3 = "<null>";
},
    {
    key1 = a;
    key3 = "<null>";
},
    {
    key1 = a;
    key3 = c;
},
    {
    key1 = a;
    key3 = c;
}

)

关于ios - 从另一个 NSDictionary 获取 NSArray,其中包含原始键集的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18826297/

相关文章:

ios - 无法设置 UICollectionView 的动态初始内容

ios - 使用 NSPredicate 在自定义对象的 NSArray 中搜索字符串

ios - 从 Objective-C iOS 中的 View Controller 在应用程序委托(delegate)数组中添加对象

ios - 如何在 Swift 3 中访问深层嵌套的 NSDictionary?以前我们曾经这样访问 -

json - 将 JSON 字符串 UTF8 转换为 NSDictionary Swift

ios - iOS 4.2 中的 NSUserDefault 问题

ios - Jenkins 和 Xcode5 单元测试目标 - 没有测试输出?

ios - 使用 dequeueReusableCellWithIdentifier 指定单元格时停止影响随机 UITableViewCells

ios - NSArray、NSUserDefaults、可选项和解包困惑

arrays - 无法使用 '[AnyHashable : Any]' 类型的索引为 'Any?' 类型的值添加下标