NSMutableDictionary将所有值放在一起,而不是新的新值

时间:2013-07-25 08:48:45

标签: ios sqlite ios4 nsmutablearray nsmutabledictionary

我正在构建所有数据,使其看起来像是来自服务器的响应数据字典。 现在, newsFeedsDict1 Bolly 全球的词典不仅仅显示全局词典中的所有数据。我的for循环运行时显示 Bolly 的正确数据。但是第二次在全球词典中显示 Bolly的数据。

if(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];


        }


}

2 个答案:

答案 0 :(得分:1)

很难说出您的代码应该做什么,以及如何判断一个字典与另一个字典具有相同的内容。几个问题:

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

第一行完全没必要。您正在创建一个新数组,将其分配给myLocalArray,然后将其他内容分配给myLocalArray。您稍后会使用self.categoriesDictionary执行相同的操作。这让我相信你对对象指针有一些误解。

因此,从共享数据库获取的数组最终位于myLocalArray,然后您将该数组添加到articleDict的字典中,然后将articleDict添加到{{} 1}}然后将其添加到newsFeedDict。然后你记录newsFeedDict1。对于您的标题newsFeedDict1@"Bolly",您完全相同,因此在两种情况下都看到相同的输出并不奇怪。

我很难看到你为什么期望输出不同,我不得不再次猜测它是由于误解了将一个对象指针指向另一个时发生的情况。或者,也许你期望从@"Global"获得的数组是不同的,因为你传递了不同的标题。也许你真的应该在那里得到不同的阵列;查看[[Database sharedDatabase] getArticleData:title];方法中发生的事情以及它是否真的能为每个标题提供正确的结果是个好主意。

如果这没有帮助,请花一些时间来清理代码,以便我们更容易,更重要的是,让您真正了解正在发生的事情。此外,请编辑您的问题,以更好地描述您所看到的内容以及与您期望看到的内容有何不同。

答案 1 :(得分:1)

您可以为 * getArticleData () *方法

编写代码段吗?