NSDictionary到多维数组ios?
我有一本NSDictionary,它的值如下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
@{@"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:
?谢谢你的提示,我已经实现了。