Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSArray内的词典_Objective C_Cocoa - Fatal编程技术网

Objective c NSArray内的词典

Objective c NSArray内的词典,objective-c,cocoa,Objective C,Cocoa,我试图将1字典的不同实例放入一个数组中。共享预期和当前输出。请提出一些建议 提前谢谢 程序.h @property (nonatomic,strong)NSMutableArray* array; Program.m -- (void)StartFuntion { _array = [[NSMutableArray alloc] init]; NSMutableDictionary* dicOne = [[NSMutableDictionary alloc] init]; [dicOne

我试图将1字典的不同实例放入一个数组中。共享预期和当前输出。请提出一些建议 提前谢谢

程序.h

@property (nonatomic,strong)NSMutableArray* array;
Program.m

-- (void)StartFuntion
 {
_array = [[NSMutableArray alloc] init];
NSMutableDictionary* dicOne = [[NSMutableDictionary alloc] init];

[dicOne setObject:@"A" forKey:@"1"];        //Adding new
[dicOne setObject:@"B" forKey:@"2"];
[dicOne setObject:@"C" forKey:@"3"];
[dicOne setObject:@"D" forKey:@"4"];
[self addob:dicOne];                       //sending dicOne to funtion 

[dicOne removeAllObjects];              //Remove objects

[dicOne setObject:@"X" forKey:@"100"];      //Again Adding new objects
[dicOne setObject:@"Y" forKey:@"200"];
[dicOne setObject:@"Z" forKey:@"300"];
[dicOne setObject:@"W" forKey:@"400"];
[self addob:dicOne];
}


-- (void) addob:(NSMutableDictionary*)dic{

[_array addObject:dic];
NSLog(@"_array = %@",_array);

}
电流输出:

  _array = (
         {
    100 = X;
    200 = Y;
    300 = Z;
    400 = W;
},
    {
    100 = X;
    200 = Y;
    300 = Z;
    400 = W;
}
    )
  _array = (
     {
    1 = A;
    2 = B;
    3 = C;
    4 = D;
},
    {
    100 = X;
    200 = Y;
    300 = Z;
    400 = W;
  }
      )
预期输出:

  _array = (
         {
    100 = X;
    200 = Y;
    300 = Z;
    400 = W;
},
    {
    100 = X;
    200 = Y;
    300 = Z;
    400 = W;
}
    )
  _array = (
     {
    1 = A;
    2 = B;
    3 = C;
    4 = D;
},
    {
    100 = X;
    200 = Y;
    300 = Z;
    400 = W;
  }
      )

您正在重用
NSMutableDictionary
,而不是创建新实例。做点像这样的事吧

[_array addObject:@{
                    @"1" : @"A",
                    @"2" : @"B",
                    @"3" : @"C",
                    @"4" : @"D",
                   }];

[_array addObject:@{
                    @"100" : @"X",
                    @"200" : @"Y",
                    @"300" : @"Z",
                    @"400" : @"W",
                   }];

您正在重用
NSMutableDictionary
,而不是创建新实例。做点像这样的事吧

[_array addObject:@{
                    @"1" : @"A",
                    @"2" : @"B",
                    @"3" : @"C",
                    @"4" : @"D",
                   }];

[_array addObject:@{
                    @"100" : @"X",
                    @"200" : @"Y",
                    @"300" : @"Z",
                    @"400" : @"W",
                   }];

您不能重复使用
dicOne
。创建一个新实例,而不是删除其对象

_array = [[NSMutableArray alloc] init];
NSMutableDictionary* dicOne = [[NSMutableDictionary alloc] init];

[dicOne setObject:@"A" forKey:@"1"];        //Adding new
[dicOne setObject:@"B" forKey:@"2"];
[dicOne setObject:@"C" forKey:@"3"];
[dicOne setObject:@"D" forKey:@"4"];
[self addob:dicOne];                       //sending dicOne to funtion 

dicOne = [[NSMutableDictionary alloc] init];

[dicOne setObject:@"X" forKey:@"100"];      //Again Adding new objects
[dicOne setObject:@"Y" forKey:@"200"];
[dicOne setObject:@"Z" forKey:@"300"];
[dicOne setObject:@"W" forKey:@"400"];
[self addob:dicOne];

您不能重复使用
dicOne
。创建一个新实例,而不是删除其对象

_array = [[NSMutableArray alloc] init];
NSMutableDictionary* dicOne = [[NSMutableDictionary alloc] init];

[dicOne setObject:@"A" forKey:@"1"];        //Adding new
[dicOne setObject:@"B" forKey:@"2"];
[dicOne setObject:@"C" forKey:@"3"];
[dicOne setObject:@"D" forKey:@"4"];
[self addob:dicOne];                       //sending dicOne to funtion 

dicOne = [[NSMutableDictionary alloc] init];

[dicOne setObject:@"X" forKey:@"100"];      //Again Adding new objects
[dicOne setObject:@"Y" forKey:@"200"];
[dicOne setObject:@"Z" forKey:@"300"];
[dicOne setObject:@"W" forKey:@"400"];
[self addob:dicOne];

您可以这样做:

NSMutableArray array = [[NSMutableArray alloc] init];
[array addObject:dict1];
[array addObject:dict2];

您可以这样做:

NSMutableArray array = [[NSMutableArray alloc] init];
[array addObject:dict1];
[array addObject:dict2];

当然可以,但在将dic插入阵列之前,必须先复制一份dic

-- (void) addob:(NSMutableDictionary*)dic{
[_array addObject:[dic copy]];
NSLog(@"_array = %@",_array);
}
如果您想在数组中使用可变dic,请使用[dic mutableCopy]。
您也可以在调用addob:时进行复制,而不是在方法中进行复制。

当然可以,但您必须在将dic插入数组之前进行复制

-- (void) addob:(NSMutableDictionary*)dic{
[_array addObject:[dic copy]];
NSLog(@"_array = %@",_array);
}
如果您想在数组中使用可变dic,请使用[dic mutableCopy]。
您也可以在调用addob:时进行复制,而不是在方法中进行复制。

FYI-与OP的代码相比,您的键和值是向后的。刚刚意识到这一点。没有人喜欢
[setValue:forKey:
是有原因的,因为
[setObject:forKey:
更好。是的,是的。不管怎样PFYI-与OP的代码相比,您的键和值是向后的。刚刚意识到这一点。没有人喜欢
[setValue:forKey:
是有原因的,因为
[setObject:forKey:
更好。是的,是的。不管怎样P