Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将旧NSDictionary值添加到2 for循环内的新NSDictionary_Ios_Objective C_Nsarray_Nsdictionary - Fatal编程技术网

Ios 将旧NSDictionary值添加到2 for循环内的新NSDictionary

Ios 将旧NSDictionary值添加到2 for循环内的新NSDictionary,ios,objective-c,nsarray,nsdictionary,Ios,Objective C,Nsarray,Nsdictionary,所以我有一个难题,我正试图解决;我正在尝试“合并”两个NSARRAY词典。一个数组是新的,也称为有效的好友列表,旧的数组是您在拾取/撰写时先前选择的任何收件人。我所要做的就是将一个对象从旧的NSDictionary复制到新的NSDictionary中,如果这个朋友仍然存在于新的NSArray NSDictionary中的话 基本上,如果点击recipients选择器中的表单元格,我会将其保存为NSDictionary的选定状态键。因此,下次我检查您是否仍然与以前的朋友是朋友时,我希望在刷新表视图

所以我有一个难题,我正试图解决;我正在尝试“合并”两个NSARRAY词典。一个数组是新的,也称为有效的好友列表,旧的数组是您在拾取/撰写时先前选择的任何收件人。我所要做的就是将一个对象从旧的NSDictionary复制到新的NSDictionary中,如果这个朋友仍然存在于新的NSArray NSDictionary中的话

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

我已尝试嵌套for循环,但从未设置上一个选定对象。我认为对象永远不会被设置,因为内部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];
}

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

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