ios - NSMutableDictionary 给出所有相同的值而不是新的新值

标签 ios sqlite ios4 nsmutablearray nsmutabledictionary

我正在构建所有数据,使其看起来像来自服务器的响应数据字典。 现在,newsFeedsDict1 应该是 BollyGlobal 的字典,它不仅只显示 Global 字典中的所有数据。当我的 for 循环运行时,它会显示 Bolly 的正确数据。但它第二次在 Global 字典中显示 Bolly's 数据。

如果(互联网状态 == 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];


        }


}

最佳答案

很难说出您的代码应该做什么,也很难说出一本字典与另一本字典具有相同的内容。几个问题:

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: 方法中发生了什么,以及它是否真的为每个标题提供了正确的结果。

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

关于ios - NSMutableDictionary 给出所有相同的值而不是新的新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17853235/

相关文章:

iOS 如何以编程方式从设置应用程序启动 WIFI 页面?

android - 如何在 Android 中正确使用外键,使用 SQLite 和 OrmLite

objective-c - 在 UITableView 中选择单元格时创建 UIWebView

ios - NSOperation和NSOperationQueue iOS的后台任务

xcode - 使用 Xcode 4 时的 EXC_BAD_ACCESS

ios - 防止音乐在应用程序中停止

ios - 尝试附加结构数组时发生突变错误

ios - 如何超越 Swift 4 的 Var 命名限制?

sql - 选择..来自(选择..来自..)。如何改进此查询?

sql - 在 SQLite3 的列中搜索特定文本值