2012-08-09 72 views
3

我在这里使用的NSMutableArray存储日期,然后我试图设置键和字典分配ArrayValue但应用程序崩溃,请帮我如何在iphone中设置数组值和键入NSDictionary?

在此先感谢

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. 

回答

9

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

+0

现在我使用NSMutableDictionary来存储日期,然后如何对这个字典进行排序,这有可能吗? – SampathKumar 2012-08-09 12:06:49

+0

参考以下q&a:http://stackoverflow.com/questions/4558639/sort-an-nsmutabledictionary http://stackoverflow.com/questions/8118932/how-can-i-sort-nsmutabledictionary-with-keys-value – 2012-08-09 12:09:27

+0

这里实际上没有必要使用可变字典,而只需使用适当的'init'方法或新的语法。 – 2012-08-09 12:14:06

-2

像这样做:

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

谢谢对于你的回复,现在我尽快检查并更新你。 – SampathKumar 2012-08-09 11:52:02

+1

'myDictionary'不可变 - 您无法在其上调用'addObject:forKey:'。 – deanWombourne 2012-08-09 11:54:13

2

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

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

感谢您的回复。 – SampathKumar 2012-08-09 11:52:43

+0

现在我用NSMutableDictionary来存储日期,然后如何对这个字典进行排序,这有可能吗? – SampathKumar 2012-08-09 12:07:08

+0

字典无法排序。您可以对数组进行排序。你也应该接受我的回答,因为我之前已经给出了答案。 – Apurv 2012-08-09 12:08:35

2

如果您使用的XCode 4.4版或更高版本,你可以绝对做到这一点:

[dateArray addObject:dateString]; //NSMutablArray 
NSDictionary *myDictionary = @{ @"Date", dateArray }; 
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]; 

NB得到一个nonmutable一个可变类:也有一些具有可变的子类,即NSURL其他类 - >NSMutableURL

+0

在回答如此长的回答之前再次检查问题。 – 2012-08-09 12:00:04

+0

挂起,你编辑它,并将类名从immutable更改为可变吗? __你改变了被问到的问题___;你知道最初的提问者吗?编辑旨在更正确地询问问题,而不是“修复”问题 - 如果您想修复代码,请回答问题! – deanWombourne 2012-08-09 12:02:31

+0

查看编辑的名字,不要怪我。 – 2012-08-09 12:03:54

相关问题