2012-08-09 71 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

相關問題