나는이 문제에 관해서 온통 보았다. 내가하려고하는 것은 nsuser defaults 객체를 만든 다음 변경 가능한 배열을 추가하고 nsuserdefaults 객체를 수정하는 것입니다. 하나 [defaults synchronize]
does'nt 도움을 추가iphone xcode; mutableCopy 여전히 불변?
//Created a sample array
NSMutableArray *xml=[[NSMutableArray alloc] init];
[xml addObject:@"x"];
[xml addObject:@"x"];
[xml addObject:@"x"];
[xml addObject:@"x"];
[xml addObject:@"x"];
//assigned to defaults object which is created previously with a mutableCopy
[defaults setObject:[xml mutableCopy] forKey:@"userLocationsDetailedXML"];
//Tried to modify the defaults object - which at this point should be mutable
[[defaults objectForKey:@"userLocationsDetailedXML" ] replaceObjectAtIndex:1 withObject:@"y"] ;
.
하지만 놀랍게도 defaults 객체는 여전히 변경할 수 없습니다. 예상대로 __NSCFArrayM이 아닌 __NSCFArray입니까 제안 사항이 있습니까?
편집 : 콘솔 출력 클래스 : 내가 변경 가능한 사본을 생성하기 때문에 __NSCFArray =이>는 _ NSCFArrayM 될 SHould'nt? [ _NSCFArray replaceObjectAtIndex : withObject는 :] 불변 오브젝트
안녕하세요 샘, 그게 도움이되지 못했습니다. 배열이 변경되지 않는다는 오류가 발생합니다. 그러나 woul'dnt [xml mutableCopy]는 가변 배열을 생성합니까? 이 경우 왜 불변입니까? – Veeru
오, 그 다른 대답에 좋은 물건! 이 특정 문제를 처리하기 위해 NSUserDefaults를 사용할 수없는 것 같습니다. –
이 작업을 더 잘 수행 할 수있는 방법에 대한 제안으로 내 대답을 편집했습니다. –