0

내 프로젝트에서 NSArrayController를 응용 프로그램의 표준 기본값 (NSUserDefaults)에 저장하도록 바인딩했습니다. 이것 자체는 완벽하게 작동합니다. 추가 된 오브젝트는 예상대로 저장되고 복원됩니다.NSUserDefaults에 바인딩 된 NSArrayController의 객체에 대한 수정이 저장되지 않습니다.

그러나 프로그래밍 방식으로 NSArrayController 배열에 포함 된 NSMutableDictionaries 중 하나를 수정하면 변경 내용이 저장되지 않습니다. 사전 작성으로 설정된 값만이 막대기처럼 보입니다.

단순히 어레이의 사전에서 setObject : forValue :를 호출하면 컨트롤러에 변경 사항을 알리지 못하기 때문에 이것이 의심 스럽지만 확실하지 않습니다. 내가 뭔가 잘못하고 있는거야?

업데이트 : 이후 NSMutableDictionary에서 KVC를 준수하는 사용자 지정 개체로 전환했습니다. (내 지식이 가장 뛰어나므로 NSCoding과 마찬가지로 속성을 사용하고 있습니다.) NSCoding. 저장 및 복원이 가능하고 일관성이 없습니다. 속성을 업데이트하는 대신 느낌이들 때마다 다소 절약됩니다.

+0

사용자 기본값 컨트롤러를 사용하지 않는 이유가 있습니까? 그리고 개체를 수정하기 전에 [arrayController willChangeValueForKey : @ ""]을 사용하고 [arrayController didChangeValueForKey : @ ""]를 사용하고 있습니까? – macandyp

+0

이 경우 이해가가는 것 같아 사용자 기본값을 사용하고 있습니다. 배열은 단순히 사용자의 다운로드 목록입니다. 또한 will/didchangevalueforkey를 사용하지 않았지만 더 이상 필요하지 않습니다. 업데이트 된 원본 게시물을 확인하십시오. –

답변

0

음, 필자는 자신의 plist 파일로 다운로드를 저장하고로드하는 책임을 맡은 컨트롤러를 작성했습니다. 문제가 해결되면 문제가 해결 될 때까지 절약됩니다.

관련 문제