2015-01-21 9 views
-3

업데이트 됨 이것은 내 코드입니다. 코드의 마지막 줄에서 제목에 설명 된대로 오류가 발생했습니다. userDefaults가 항상 변경 불가능한 객체를 반환한다는 것을 이해합니다. 그래서 어떻게 해결할 수 있습니까? 보내는 필드를 "변경 가능한 복사본"으로 만들려고했으나 오류로 표시되었습니다.[NSCFArray replaceObjectAtIndex : withObject :] : 변경 가능한 메소드가 불변 객체로 전송되었습니다.

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 

    if(textField.tag == kStaffName) { // get index of staffName textField 
    NSMutableArray *staffNamesArray = [[userDefaults arrayForKey:@"staffNamesArray"] mutableCopy]; 

    NSInteger indexSelected = [oStaffPickerView selectedRowInComponent:0]; 

    [staffNamesArray replaceObjectAtIndex:indexSelected withObject:textField.text]; 
+0

@ njzk2 확실히 중복되지 않습니다. 코드는 이미'mutableCopy'를 사용하고 있으므로 [받아 들인 대답] (http://stackoverflow.com/a/5710719/11940)과 일치합니다. –

+0

"if"가 화면의 오른쪽 경계선 밖에서 영리하게 숨겨져 있기 때문에 여전히 변경 불가능한 다른 배열을 수정하지 않습니까? – gnasher729

+1

'오류로 표시되었습니다 .' 분명히 해주세요. – njzk2

답변

1

이 작업을 시도 할 수 있습니다 :

NSMutableArray *staffNamesArray = [[NSMutableArray alloc] initWithArray:[userDefaults arrayForKey:@"staffNamesArray"]]; 

희망이 당신을 도와!

+1

2 개의 변경 가능 사본이 필요하지 않습니다. – Wain

+0

사실, 복사하여 붙여 넣기입니다. mi 응답을 편집하십시오. – weso

+0

@Wain : * userDefaults *는 내가 문제의 원인이라고 생각하는 불변의 배열을 반환합니다. 그러면 weso의 코드가 userDefaults 배열을 변경 가능하게 만들지 않을까요? – SpokaneDude