如何在iphone中设置NSDictionary中的数组值和键?

时间:2012-08-09 11:47:34

标签: iphone ios object nsmutablearray nsdictionary

这里我使用NSMutableArray来存储日期,然后我尝试设置键并在字典中分配ArrayValue但应用程序崩溃了,请帮帮我

感谢ADvance

 Here i tried the code for your reference:

  [DateArray addObject:dateString]; //NSMutablArray 
  NSMutableDictionary *myDictionary =[[NSMutableDictionary alloc]init];         
  [myDictionary setObject:DateArray forKey:@"Date"]; //put array value and set key in NSDictionary.

5 个答案:

答案 0 :(得分:9)

NSDictionary类是不可变的。您必须转换为NSMutableDictionary。

答案 1 :(得分:2)

您正在使用NSDictionary。您应该使用NSMutableDictionary。 NSDictionary是不可变的。如果您想使用NSDictionary,请使用以下方法:

- (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;

答案 2 :(得分:2)

如果您使用的是XCode 4.4或更高版本,您可以这样做:

[dateArray addObject:dateString]; //NSMutablArray 
NSDictionary *myDictionary = @{ @"Date", dateArray };

答案 3 :(得分:0)

当您使用NSDictionary

时,您正在使用NSMutableDictionary

试试这一行:

NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init];

iOS中的大多数集合类都具有可变和不可变的版本(即

NSArray -> NSMutableArray
NSSet -> NSMutableSet
NSDictionary -> NSMutableDictionary
(and others)

可变版本将允许您修改内容。但是,如果您知道自己不打算更改它,那么使用非可变版本的速度会稍快一些。

您可以(通常)使用mutableCopy方法从不可变的类中获取可变类,即

// This array can't be changed
NSArray *myArray = @[ @"A", @"B", @"C" ];

// This array contains everything from the previous array but can now be modified
MSMutableArray myArray2 = [myArray mutableCopy];

注意:还有其他类具有可变子类,即NSURL - > NSMutableURL

答案 4 :(得分:-2)

这样做:

for(int i=0;i<[DateArray count]; i++)
{
   [myDictionary addObject:[DateArray objectAtIndex:i] forKey:@"Date"];
}