如何在Objective C中将两个数组对象作为对象和键添加到第三个数组

时间:2018-01-10 09:03:46

标签: ios objective-c arrays collections

我试图在第三个数组中添加两个数组,即一个数组的对象是第三个数组的值,而其他数组的对象是第三个数组的键,我得到的输出为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)

4 个答案:

答案 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)

有两个问题:

  1. 空问题:您没有初始化数组。所以你必须使用以下声明:

    NSMutableArray * autoSyncDataArray = [[NSMutableArray alloc] init];

  2. 键/值对:如果要将键和值放在数组中。它不会像字典一样工作。它将按顺序形式进行。如果您对顺序表单没问题,请使用:

    [autoSyncDataArray addObject:[self.resultDict objectForKey:@“keys”]]; [autoSyncDataArray addObject:[self.resultDict objectForKey:@“values”]];

  3. 否则使用:

    NSMutableDictionary *autoSyncDataDict = [[NSMutableDictionary alloc] init];
    [autoSyncDataArray setValue:[self.resultDict objectForKey:@"values"] 
        forKey:[self.resultDict objectForKey:@"Keys"]];