我试图在第三个数组中添加两个数组,即一个数组的对象是第三个数组的值,而其他数组的对象是第三个数组的键,我得到的输出为null ,这是一种正确的方法。
NSArray *newcontactkeys,*newcontactvalues ;
NSMutableArray *autoSyncDataArray;
newcontactkeys=[self.resultDict objectForKey:@"keys"];
newcontactvalues=[self.resultDict objectForKey:@"values"];
[autoSyncDataArray setValue:[self.resultDict objectForKey:@"values"]
forKey:[self.resultDict objectForKey:@"Keys"]];
NSLog(@"autosyncArray is %@",autoSyncDataArray);
输出:autosyncArray是(null)
答案 0 :(得分:1)
您使用的是一个索引集合的数组,但是在讨论键时,字典是键控集合。
NSDictionary
有一个类方法可以直接从两个数组创建一个字典,使用它来代码变成现代的Obj-C语法:
NSArray *newContactKeys = self.resultDict[@"keys"];
NSArray *newContactValues = self.resultDict[@"values"];
NSDictionary *autoSyncDataDict = [NSDictionary dictionaryWithObjects:newContactValues
forKeys:newContactsKeys];
HTH
答案 1 :(得分:0)
您没有初始化阵列。
NSMutableArray *autoSynchDataArray = [NSMutableArray new]
也可以使用addObject而不是set value:
[autoSyncDataArray addObject:[self.resultDict objectForKey:@"values"]
答案 2 :(得分:0)
您无法加入/操作多个NSArray类型的数组。 创建一个NSMutableArray,允许重新排序和操作其中的数据。您可以向其添加任意数量的对象,重新排列并删除它。
NSMutableArray * templateArray = [NSMutableArray new];
答案 3 :(得分:0)
有两个问题:
空问题:您没有初始化数组。所以你必须使用以下声明:
NSMutableArray * autoSyncDataArray = [[NSMutableArray alloc] init];
键/值对:如果要将键和值放在数组中。它不会像字典一样工作。它将按顺序形式进行。如果您对顺序表单没问题,请使用:
[autoSyncDataArray addObject:[self.resultDict objectForKey:@“keys”]]; [autoSyncDataArray addObject:[self.resultDict objectForKey:@“values”]];
否则使用:
NSMutableDictionary *autoSyncDataDict = [[NSMutableDictionary alloc] init];
[autoSyncDataArray setValue:[self.resultDict objectForKey:@"values"]
forKey:[self.resultDict objectForKey:@"Keys"]];