2011-03-06 3 views
2

나는 만들고있는 도구에 대한 환경 설정 패널의 일부인 NSPredicateEditor를 가지고 있습니다.NSPredicateEditor를 공유 사용자 기본값 컨트롤러에 바인딩

NSUserDefaults 개체의 다른 항목처럼 사용자의 선택을 저장하고 싶습니다. 그러나 NSPredicateEditor 개체에 바인딩을 추가하고 도구를 실행하면 데이터를 보관하지 않고 더 이상 다른 항목을 만듭니다 기본값은 표시되지 않습니다. 바인딩을 제거하고 다시 컴파일하면 다른 모든 것들이 다시 돌아옵니다.

NSPredicatedEditor 데이터를 사용자 기본 설정으로 저장하는 가장 좋은 방법은 무엇입니까?

감사합니다.

답변

2

NSPredicateEditor의 UI가 변경 될 때마다 변경 사항이 즉시 편집기 objectValue (즉, NSPredicate으로 표시)에 반영됩니다. 따라서 당신은 그 술어를 붙잡고 NSKeyedArchiver을 사용하여 보관할 수 있습니다. 이렇게하면 술어가 NSData 오브젝트로 바뀌어 NSUserDefaults에 저장할 수 있습니다.

다시 읽어 보려면 NSData 개체를 잡고 술어 편집기에서 NSKeyedUnarchiversetObjectValue:을 실행하십시오.

은 아마도 이것을 시도한 적이 없지만 바인딩을 통해 수행 할 수 있습니다. You can bind the value of an NSPredicateEditorNSPredicate (또는 NSPredicateNSData 형식으로 입력)으로 보내십시오. 또한 값 변환기가 NSKeyedUnarchiveFromData 변 환기가되도록 지정해야 할 수도 있습니다.

+0

감사합니다. 그것은 Interface Builder에서 NSKeyedUnarchiveFromData를 사용하여 작업했습니다. 이것은 방금 많은 시간을 절약 해주었습니다. 단추 클릭시 조건 자 설명이있는 환경 설정을 업데이트하는 대리자를 구현했습니다. 하지만 이제는 간단한 답변 덕분에 인터페이스 작성기에서 바인딩을 연결 한 것뿐입니다. 큰! – chaimp

관련 문제