将多个数组放入字典

Put multiple arrays in Dictionary

我正在用for循环多次解析一个CSV文件,这里我需要将这些数组一个一个地存储到字典中。堆栈中关于将 NSArray 添加到 NSDictionary 的问题非常少。我正在用下面的代码解析 CSV,但我发现存储在 NSDictionary 中,程序正在终止并在将字符串分配给字典时显示警告

for (i=0; i<=57; i++) {
    NSString *keysString = [csvArray objectAtIndex:i];
    NSArray *keysArray = [keysString componentsSeparatedByString:@","];
    NSLog(@"Serail No %d %@",i,keysArray);
    NSString *string = [NSString stringWithFormat:@"%d", i];
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjects: keysArray forKeys: string];
  }
NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];

for (i=0; i<=57; i++) {
 NSString *keysString = [csvArray objectAtIndex:i];
 NSArray *keysArray = [keysString componentsSeparatedByString:@","];
 NSString *key = [NSString stringWithFormat:@"serial%d",i];
 [dict setObject:keysArray forKey:key];

 }

要从字典中取回数据,

NSArray *array = [dict valueForKey:@"serial24"];//to get array 24.

如果我没理解错的话,您想将数组添加到字典中,键是整数 i 的字符串值?您需要做的是在循环外分配字典 -

NSMutableDictionary *dict=[NSMutableDictionary new];
for (i=0; i<=57; i++) {
   NSString *keysString = [csvArray objectAtIndex:i];
   NSArray *keysArray = [keysString componentsSeparatedByString:@","];
   NSLog(@"Serial No %d %@",i,keysArray);
   NSString *string = [NSString stringWithFormat:@"%d", i];
   dict[string]=keysArray;
}

我不确定您为什么要这样做,因为这基本上是一个数组。你可以简单地做 -

NSMutableArray *outputArray=[NSMutableArray new];
for (NSString *keysString in csvArray) {
   NSArray *keysArray = [keysString componentsSeparatedByString:@","];
   [outputArray addObject:keysArray];
}