2011-10-21 65 views
0

我在UINavigation環境中使用它。我有customClassA。它繼承customClassB並且它的一個對象是一個NSMutableDictionary。NSMutableDictionary setObject:forKey - 自定義類

我在viewController中alloc和init customClassA,然後爲了添加數據,我將一個新的viewController放入堆棧。 addNewDataViewController通過它的委託將新添加的數據,一個對象返回給客戶端。到目前爲止一切正常。

customClassA必須返回的對象(customClassB)存儲到它的使用密鑰(來自的NSDate創建一個NSString)的NSMutableDictionary對象。

我得到「mutating方法發送到不可變對象」的錯誤,並不能想出任何解決方案。 任何幫助表示讚賞。

謝謝。

===========================

interface customClassA : NSObject 
{ 
    NSDate date; 
    NSArray *array; // will contain only NSString objects 
} 
// and the rest as customary 
... 

#import "customClassA.h" 
interface customClassB : NSObject 
{ 
    NSString *title; 
    NSMutableDictionary *data; // will contain values of customClassA with keys of NSString 
} 
// and the rest as customary 

... 

#import "customClassB" 
#interface firstViewController : UITableViewController <SecondViewControllerDelegate> 
- (void)viewDidLoad 
{ 
     self.customClassB_Object = [customClassB alloc] init]; 
     // and the rest... 
} 

- (void)secondViewControllerDidSaveData:(customClassA *)aData 
{ 
    [self.customClassB_Object.data setObject:aData forKey:[NSString stringWithFormat:@"%@", aData.date]]; 
    // update tableView 
} 
+1

你可以發佈一些更多的代碼圍繞問題領域,以及你如何創建NSMutableDictionary – logancautrell

+0

我張貼了一些代碼。希望有所幫助。 – Canopus

+0

customClassB_Object在哪裏定義? – logancautrell

回答

1

確保你的東西初始化NSMutableDictionary

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

這樣看來,你NSMutableDictionary是越來越有NSDictionary實例,而不是一個NSMutableDictionary

+0

已經做到了。沒有工作。事實上,並且手動給它一個對象和一個鍵,並且當addNewDataViewController被調用時,它仍然保存那個手動提供的對象。但拒絕setObject:forKey !!! – Canopus

+0

你需要發佈一些更多的代碼。設置斷點/記錄問題區域可能會有所幫助。 – logancautrell

+0

我發佈了一些代碼。希望有所幫助。 – Canopus

0

Althoguh創建我下面的代碼添加到customCl assB的實施,它仍然沒有工作。

#implementation customClassB 
- (id)init 
{ 
     self = [super init]; 
     if (self) 
      self.data = [NSMutableDictionary alloc] init]; 
     return self; 
} 

所以我加了兩個自定義方法,以我的customClassB實施,以及在頭文件:

- (void)appendData:(customClassA *)aData; 
- (void)removeDataWithKey:(NSString *)aKey; 

,而不是在我的viewController操縱customClassB的數據dicionary和,我只是調用方法,並將數據對象傳遞給類,它做到了。