2014-05-20 76 views
0

當執行下面的塊時。我的friends_dict NSMutableDictionary值更改爲friend更改。如果我沒有錯,這是因爲字典中的值的引用傳遞給friend。如何傳遞值而不是引用並防止字典發生變化。iOS傳遞值而不是引用

NSMutableArray *friendsArray = [[NSMutableArray alloc] initWithArray:[friends_dict valueForKey:selectedFriendId]]; 
for (NSObject *object in [response objectForKey:@"friend_nearby"]){ 
     NSString *id = [NSString stringWithFormat:@"%@",[object valueForKey:@"id"]]; 
     NSString *spotValue = [NSString stringWithFormat:@"%@",[object valueForKey:@"spot"]]; 
     for(int i = 0; i < [friendsArray count]; i++){ 
      FriendDataModel *friend = [[FriendDataModel alloc] init]; 
      friend = [friendsArray objectAtIndex:i]; 
      if ([friend.friendId isEqualToString:id] && ![friend.spot isEqualToString:spotValue]) { 
       friend.spot = spotValue; //This is where the dictionary value changes 
       [friendsArray replaceObjectAtIndex:i withObject:friend]; 
       spotChanged = YES; 
      } 
     } 
    } 
+0

列舉它時不要改變數組。 – zaph

+0

傳遞對象的副本。 –

回答

0

複製數組並傳入副本。

NSArray *friendList = [friends_dict valueForKey:selectedFriendId]; 
NSMutableArray *friendsArray = [friendList mutableCopy]; 
+0

好的。將嘗試並更新你。 – Uma

+1

在「它不起作用」評論之前,您需要使'FriendDataModel'符合'NSCopying'。 –

+0

@現場感謝您的領導!我正在這樣做;) – Uma

相關問題