2009-05-04 4 views
3

이 부분에 대한 답변은 "아니오"일 것이므로 함께 다가 갈 수있는 부분에서 보입니다. 그래서 내가 시도하고있는 (가능한) 사례에서 광범위하게 설명하려고합니다. 나사 망치.코코아 바인딩을 사용하여 편집 가능한 NSTableView를 NSMutableArray에 연결시킬 수 있습니까?

내 응용 프로그램에는 디렉토리를 통해 재귀 적으로 읽을 수있는 유효한 파일 확장명 목록이 있습니다.

인가 ...

NSMutableDictionary *dic = [NSMutableDictionary dictionary]; 
[dic setObject:[NSMutableArray arrayWithObjects:@"pdf", @"rtf", @"txt", nil] forKey:@"validExtensions"]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:dic]; 

내가 공유 사용자 기본 컨트롤러에 바인딩 된 NSArrayController에 NSTableView는 바인딩 해요 : 나는이 선호되고 싶어요, 그래서 나는 다음있어 이것은 사용자가 사용자 정의 할 수있는 유효한 확장 목록을 갖는 것에 대한 잘못된 접근 방식입니까? NSUserDefaults의 역할을 오해 했습니까?

답변

3

제목에 제기 된 질문에 대한 대답은 "예"입니다.하지만 실제 NSUserDefaults 백킹 스토어의 데이터 구조가 변경 될 수 있기 때문에 불행히도 도움이되지 않습니다. registerDefaults :로 전달한 객체.

기본 설정 값을 변경하려면 기존 구조를 변경하기 위해 수정해야하는 부분의 변경 가능한 사본을 만들어 변경 한 다음 해당 구조를 새 값으로 설정하십시오. 불행히도 바인딩에 적합하지 않으므로 바인딩 된 배열의 변경 사항을 환경 설정에 반영하는 접착제 레이어가 필요합니다.

+0

아 물론. 배열 자체를 변경할 수는 없지만 배열 전체를 -setObject : forKey :로 대체 할 수 있습니다. 감사합니다. – Drarok