2013-07-25 61 views
0

我正在構造所有數據看起來像來自服務器的響應數據字典。 現在,newsFeedsDict1哪個應該字典爲博利全球不僅顯示全球字典內的所有數據只。而我的for循環正在運行顯示正確的數據博利。但第二次顯示博利的數據也在全球字典。NSMutableDictionary給予所有相同的值,而不是新的新值

如果(internetStatus == NotReachable) {

NSMutableArray *titleArr = [[NSMutableArray alloc] init]; 
    NSMutableArray *wholeFeeds = [[[NSMutableArray alloc] init] autorelease]; 

    [titleArr addObject:@"Bolly"]; 
    [titleArr addObject:@"Global"]; 

    for (NSString *title in titleArr) { 



    //titleArr = [[NSUserDefaults standardUserDefaults] objectForKey:@"TitleArray"]; 

    NSLog(@"TITle arr %@",titleArr); 

    NSLog(@"No internet"); 
    OrderedDictionary *newsFeedsDict1 = [[[OrderedDictionary alloc] init] autorelease]; 

    NSMutableDictionary *newsFeedsDict = [[[NSMutableDictionary alloc] init] autorelease]; 

    NSMutableArray *myLocalArray= [[[NSMutableArray alloc] init] autorelease]; 

    myLocalArray = [[Database sharedDatabase] getArticleData:title]; 

    NSMutableDictionary *articleDict = [[[NSMutableDictionary alloc] init] autorelease]; 

    [articleDict setObject:myLocalArray forKey:@"article"]; 

    [newsFeedsDict setObject:articleDict forKey:@"Articles"]; 
     [newsFeedsDict setObject:title forKey:@"@name"]; 

    [newsFeedsDict1 setObject:newsFeedsDict forKey:title]; 

     [wholeFeeds addObject:newsFeedsDict1]; 

    NSLog(@"news feed dict %@",newsFeedsDict1); 

    NSMutableDictionary *temparticleDictionary = [[NSMutableDictionary alloc] init]; 
    self.articleDictionary = temparticleDictionary; 


    self.categoriesDictionary = [[NSMutableDictionary alloc] init]; 
        self.categoriesDictionary =newsFeedsDict1; 


      [self createArticleDictionaryForCategory:newsFeedsDict]; 


     } 


} 

回答

1

這很難告訴你的代碼是應該做的,以及如何可以告訴大家,一個詞典有相同的內容作爲另一個。幾個問題:

NSMutableArray *myLocalArray= [[[NSMutableArray alloc] init] autorelease]; 
myLocalArray = [[Database sharedDatabase] getArticleData:title]; 

第一行是完全沒有必要的。您正在創建一個新陣列,將其分配給myLocalArray,然後將其他分配給myLocalArray。稍後您可以使用self.categoriesDictionary。這使我相信你對對象指針有一些誤解。

所以,你從你的共享數據庫獲取數組在myLocalArray結束了,然後你該數組添加到字典,articleDict,然後添加到articleDictnewsFeedDict反過來,這增加newsFeedDict1。然後你登錄newsFeedDict1。對於您的標題@"Bolly"@"Global",您都完全一樣,所以在兩種情況下都看到相同的輸出並不令人驚訝。

我很難看出你爲什麼期望輸出是不同的,我必須再次猜測這是由於誤解了將一個對象指針分配給另一個對象時會發生什麼。或者,您可能希望從[[Database sharedDatabase] getArticleData:title];獲得的陣列有所不同,因爲您傳遞的是不同的標題。也許你真的應該在那裏得到不同的陣列;查看-getArticleData:方法中發生的情況以及它是否確實爲每個標題提供了正確的結果將是一個不錯的主意。

如果這沒有幫助,請花些時間清理您的代碼,以便我們更輕鬆,更重要的是,您可以真正瞭解發生了什麼。另外,請編輯您的問題,以更好地描述您所看到的內容,以及與您期望看到的內容有何不同。

1

你可以寫* getArticleData() *方法

片斷
相關問題