NSDictionary到多维数组ios?

NSDictionary到多维数组ios?,ios,objective-c,multidimensional-array,nsdictionary,Ios,Objective C,Multidimensional Array,Nsdictionary,我有一本NSDictionary,它的值如下 @{@"key1":@[@"value",@"value",@"value"],@"key2":@[@"value",@"value"],@"key3":@[@"value",@"value",@"value",@"value"]} 我使用以下方法将这个字典转换为数组 +(NSMutableArray *)getTableNameandColumnValues{ NSMutableArray *uploadTableArrray =[NSMutab

我有一本NSDictionary,它的值如下

@{@"key1":@[@"value",@"value",@"value"],@"key2":@[@"value",@"value"],@"key3":@[@"value",@"value",@"value",@"value"]}
我使用以下方法将这个字典转换为数组

+(NSMutableArray *)getTableNameandColumnValues{
NSMutableArray *uploadTableArrray =[NSMutableArray new];
 uploadMasterTableDataDictionary = uploadMasterValues;


NSArray *keys = [[uploadMasterTableDataDictionary allKeys] sortedArrayUsingSelector: @selector(caseInsensitiveCompare:)];;


for(id key in keys) {
    id value = [uploadMasterTableDataDictionary objectForKey: key];
    [uploadTableArrray addObject:key];
    [uploadTableArrray addObject:value];

}
  NSLog(@"uploadTableArrray %@",uploadTableArrray);

return uploadTableArrray;
}
它的返回像数组一样

( key1,
    (
    value,
    value,
    value,
    value

),key2,
    (
    value,
    value,

    ),key3,
    (
    value,
    value,
    value
    ))
( (key1,
    "value,value,value,value"

),(key2,
    "value,value"
),(key3,
    "value,value,value"))
但我需要一个像

( key1,
    (
    value,
    value,
    value,
    value

),key2,
    (
    value,
    value,

    ),key3,
    (
    value,
    value,
    value
    ))
( (key1,
    "value,value,value,value"

),(key2,
    "value,value"
),(key3,
    "value,value,value"))
我怎样才能像这样

这应该可以:

for(id key in keys) {
    NSArray *value = uploadMasterTableDataDictionary[key];
    NSMutableArray *subArray = [NSMutableArray new];
    [subArray addObject:key];
    [subArray addObjectsFromArray:value];
    [uploadTableArrray addObject:subArray];
}
正如@NSNoob所指出的,您可能希望该值是一个逗号分隔的字符串。如果这是真的,则使用以下方法:

for(id key in keys) {
    NSArray *value = uploadMasterTableDataDictionary[key];
    [uploadTableArrray addObject:@[key, [value componentsJoinedByString:@","]]];
}

问题是该键的值已经是一个数组。将其添加到
UploadTableArray
时,它将有两个对象。一个是数组,第二个是键。因此,根据您的逻辑,输出是正确的

但是,为了满足您的需求,您必须按如下方式进行更改:

for(id key in keys) {
    NSMutableArray *value = [[NSMutableArray alloc] initWithArray:[uploadMasterTableDataDictionary objectForKey: key]];
    //[uploadTableArrray addObject:key]; Remove this line
    //[uploadTableArrray addObject:value]; and This one should go as well
    NSMutableArray *valueArr = [[NSMutableArray alloc] init];
    [valueArr addObject:key];
    [valueArr addobjectsFromArray:value];
    [uploadTableArrray addObject:valueArr];

}
但是现在再看看你的问题,我认为你希望通过组合数组中的所有对象,将值数组表示为一个字符串。为此,您必须使用以下方法:

for(id key in keys) {
        NSMutableArray *value = [[NSMutableArray alloc] initWithArray:[uploadMasterTableDataDictionary objectForKey: key]];
        NSString *valueCombinedString = @"";
        if(value.count>0)
        {
            valueCombinedString = [[value valueForKey:@"description"] componentsJoinedByString:@","];
        }

        //[uploadTableArrray addObject:key]; Remove this line
        //[uploadTableArrray addObject:value]; and This one should go as well
        NSMutableArray *valueArr = [[NSMutableArray alloc] init];
        [valueArr addObject:key];
        [valueArr addobject:valueCombinedString];//valueCombinedString will now contain all the values in the array as one string
        [uploadTableArrray addObject:valueArr]; //valueArr will now have only two strings. One will be the key and second will be the valueCombinedString

    }

按如下所述更换for loop:

for(id key in keys) {
    id value = [dict objectForKey: key];
    NSMutableArray *array = [NSMutableArray array];
    [array addObject:key];
    [array addObjectsFromArray:value];

    [uploadTableArrray addObject:array];
}

希望这有帮助

换言之,您希望将密钥嵌入数组中以对抗该密钥?我认为您可能是对的,但是您可以使用
[NSArray components sParatedBything:
@特洛伊木马大大减少该代码,我认为您的意思是
[NSArray components sJoinedBything:
?谢谢你的提示,我已经实现了。