NSPersistentDocument
창에 NSTextView
이 있습니다. "이진 데이터"핵심 데이터 필드에 텍스트 필드의 내용을 바인딩하지만 텍스트 뷰에 텍스트를 입력하면 텍스트 뷰가 포커스를 잃을 때까지 문서의 제목 표시 줄에 "편집 됨"이 표시되지 않습니다. 따라서 편집을 끝내면 새 데이터가 저장되지 않습니다.NSPersistentDocument의 NSTextView가 첫 번째 응답자가 없어 질 때까지 더티 플래그를 업데이트하지 않습니다.
NSContinuouslyUpdatesValueBindingOption
플래그를 텍스트보기 바인딩에 전달하면 "편집 됨"이 즉시 나타나지만 긴 문서에서는 성능이 실제로 저하됩니다.
모든 변경시 실제로 모든 텍스트 데이터를 할당하지 않고 저장되지 않은 변경 사항이 있음을 코어 데이터에 알리는 방법은 무엇입니까?
(가 편집 작업이 매우 느리게 만들기 때문에 내가 NSContinuouslyUpdatesValueBindingOption
을 사용할 수 없습니다를 제외하고이 질문은 "Binded NSTextField doesn't update the entity until it lose the focus"와 같다.)
'setDocumentEdited :'는 NSDocument 메소드가 아닌 NSWindow 메소드입니다. 문서의 변경 횟수를 업데이트 할 때 문서에 의해 자동으로 호출됩니다. 문서 기반 앱은'setDocumentEdited :'창을 직접 보낼 필요가 없습니다. (사실'setDocumentEdited :'에 대한 설명이 NSDocument보다 오래되었는지 궁금합니다.) –
저장이 시작될 때 손으로 코어 데이터 모델을 업데이트하기 위해 후크를 추가하는 것이 좋습니다. 코어 데이터는 윈도우의'documentEdited' 플래그가 설정되어 있기 때문에 저장이 필요하다는 것을 알고 있습니까? – alltom