2013-02-19 97 views
0

我想在幾個UITableView之間共享一個NSMutableDictionary。重點是,在一個視圖中,我可以添加一個數組作爲值和字典的相應鍵,然後設置SingletonObject的字典屬性。然後在另一個視圖中,我可以通過SingletonObject的屬性訪問字典中的數組。是否有可能有一個NSMutableDictionary作爲SingletonObject的屬性?

對於SingletonObject,在頭文件中,我有這樣的:

@property(nonatomic) NSMutableDictionary * dict; 
+(SingletonObject *) sharedManager; 

在爲SingletonObject我有這個實現文件:

@synthesize字典;

+(SingletonObject *)sharedManager static = SingletonObject * sharedResourcesObj = nil;

@synchronized(self) 
{ 
    if (!sharedResourcesObj) 
    { 
     sharedResourcesObj = [[SingletonObject alloc] init]; 
    } 
} 

return sharedResourcesObj; 

}

然後我做了以下我UITTableView類之一

 // instantiate the SingletonObject 
     sharedResourcesObj = [SingletonObject sharedManager]; 

     // instantiate array 
     NSMutableArray *courseDetails = courseDetails = [[NSMutableArray alloc]init]; 
     // put textview value into temp string 
     NSString *tempString = tempString = [[NSString alloc]initWithString:[_txtBuildingRoom text]]; 

     // put textview value into array (via temp string) 
     [courseDetails addObject:tempString]; 

     // set dictionary property of SingletonObject 
     [sharedResourcesObj.dict setObject:courseDetails forKey:_lblCourse.text]; 

的問題是,當我打印的一切出去控制檯,一行行,凡事都有一個值並正常工作,除了字典的新值不存在。

當我用下面的代碼檢查字典的值或計數時,計數爲0,字典中沒有對象。

 // dictionary count 
     NSLog(@"%i", sharedResourcesObj.dict.count); 

     // get from dictionary 
     NSMutableArray *array = [sharedResourcesObj.dict objectForKey:_lblCourse.text]; 

     // display what is in dictionary 
     for (id obj in array) 
     { 
      NSLog(@"obj: %@", obj); 
     } 

我使用正確的概念在UITableViews之間共享字典嗎?

是否存在一些與我的SingletonObject實現有關的問題?

我之前使用SingletonObject的這個實現來共享標籤之間的整數值,並且完全沒有問題。現在唯一的區別是SingletonObject的屬性不是一個整數,而是一個NSMutableDictionary。

任何人都可以幫忙嗎?

+1

沒有創建字典 – 2013-02-19 06:09:51

回答

1
@synchronized(self) 
{ 
if (!sharedResourcesObj) 
    { 
    sharedResourcesObj = [[SingletonObject alloc] init]; 

    } 
} 

return sharedResourcesObj; 
} 

- (id)init 
{ 
    if (self = [super init]) 
    { 
    _dict = [NSMutableDictionary alloc]init]; 
    } 
    return self; 
} 
+0

我在哪裏把init方法? – Zolt 2013-02-19 06:47:01

+0

在你的單例類 – 2013-02-19 06:50:07

+0

[檢查此](http:// stackoverflow。com/questions/14831505/create-nsmutabledictionary-that-will-be-available-from-everywhere-in-the-app/14831554#14831554) – 2013-02-19 06:50:37

1

你必須實際上創建字典在你的單身物體,否則它只會是nil。你通常在單身人士的init方法中這樣做。

- (id)init 
{ 
    self = [super init]; 
    if (self) { 
     dict = [NSMutableDictionary new]; 
    } 
} 
+0

這是那種我所猜測的問題可能是,但真的不知道或做什麼......你說的init方法是什麼意思?我會在SingletonObject實現文件中將+(SingletonObject *)sharedManager {}方法放在哪裏? – Zolt 2013-02-19 06:43:18

+0

你的意思是把它放在我的UITabableView類的這個方法 - (id)initWithStyle:(UITableViewStyle)風格? – Zolt 2013-02-19 06:49:00

+0

或者在ViewDidLoad中? – Zolt 2013-02-19 06:49:44

相關問題