2014-05-20 3 views
0

아래 블록을 실행할 때. 내 friends_dictfriend 변경으로 NSMutableDictionary 값이 변경됩니다. 내가 잘못하지 않았다면 이것은 사전에있는 값의 참조가 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

@ A-Live 감사합니다. 나는 그것을하고있다;) – Uma

관련 문제