将旧的NSDictionary值添加到2 for for循环中的较新NSDictionary

时间:2014-06-04 05:41:36

标签: ios objective-c nsarray nsdictionary

所以我有点想要解决的困境;我试图合并' NSDictionaries的两个NSArrays。一个阵列是新鲜的,也就是有效的朋友列表一个,而旧阵列是您在挑选/撰写时先前选择的任何收件人。我想要做的就是将旧的NSDictionary中的一个对象复制到新的NSDictionary中,如果那个朋友仍然存在于我们新的NSDrray NSArray中。

基本上,如果您点击收件人选择器中的表格单元格,我会将其保存为NSDictionary的Selected状态键。因此,当我下次检查您是否仍然是以前的朋友时,我想保存此选定状态,因为我刷新了表格视图并显示了您的所有新朋友。当我每隔60秒获得一个新的有效好友列表时,我会将所选状态预先设置为[NSNumber numberWithBool:NO],这样就可以解释为什么我想要合并之前的选定状态挑选收件人。

我已尝试嵌套for循环,但之前的Selected对象永远不会被设置。我认为对象永远不会被设置,因为内部for循环不会在外部for循环之前返回,但我不确定如何正确地进行此操作。我非常感谢任何帮助!谢谢。这是我的方法:

- (void)updateOurRecipientsWithArray:(NSArray *)newFriendsArray
{   
    NSMutableArray *newArray = [[NSMutableArray alloc]init];

    for (NSDictionary *dict in newFriendsArray)
    {
        NSMutableDictionary *newDict = [[NSMutableDictionary alloc]initWithDictionary:dict];

        for (NSDictionary *sub in appDelegate.composeFriendsArray)
        {
            // This below line checks to make sure they're still a valid friend
            if ([[newFriendsArray valueForKey:@"username"]containsObject:[sub objectForKey:@"username"]])
            {   // This below value never gets set correctly
                [newDict setObject:[sub objectForKey:@"Selected"] forKey:@"Selected"];
            }
        }

        [newArray addObject:newDict];
    }

    appDelegate.composeFriendsArray = [NSMutableArray arrayWithArray:[appDelegate sortedArray:newArray]];

    [[NSNotificationCenter defaultCenter] postNotificationName:@"UpdatePriorRecipients" object:nil];
}

1 个答案:

答案 0 :(得分:1)

通过以下方式修改您的if条件:

if ([[newDict valueForKey:@"username"] isEqualToString:[sub objectForKey:@"username"]])