所以我有点想要解决的困境;我试图合并' 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];
}
答案 0 :(得分:1)
通过以下方式修改您的if条件:
if ([[newDict valueForKey:@"username"] isEqualToString:[sub objectForKey:@"username"]])