3

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

提前致谢

 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.
4

5 回答 5

10

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

于 2012-08-09T11:51:39.047 回答
2

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

[dateArray addObject:dateString]; //NSMutablArray 
NSDictionary *myDictionary = @{ @"Date", dateArray };
于 2012-08-09T11:56:00.043 回答
2

您正在使用 NSDictionary。你应该使用 NSMutableDictionary。NSDictionary 是不可变的。如果你想使用 NSDictionary 然后使用下面的方法:

- (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
于 2012-08-09T11:51:34.177 回答
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

于 2012-08-09T11:59:19.340 回答
-2

像这样做:

for(int i=0;i<[DateArray count]; i++)
{
   [myDictionary addObject:[DateArray objectAtIndex:i] forKey:@"Date"];
}
于 2012-08-09T11:51:20.383 回答