2017-02-01 3 views
3

나는 내 MacOS 응용 프로그램에 약간의 문제가 있으며 도움을 주실 수 있기를 바랍니다. 메신저에 꽤 새로운 MacOS가있어주세요.)영역 + NSTableView + NSArrayController

앱의 일부는 NSArrayController에 바인드 된 간단한 NSTableView로 구성됩니다. NSArrayController는 영역 데이터베이스에서 공급됩니다.

TableView

당신이 영역 개체에서 부울 값을 설정해야합니다 각 행에 대한 확인란이 볼 수 있듯이.

바인딩이 괜찮으므로 확인란을 선택 취소하거나 선택 해제하면 영역 객체에 쓰는 것이 좋습니다. 그러나 영역에는 활성 쓰기 트랜잭션이 필요하기 때문에 트리거되지 않습니다. 충돌이 발생합니다.

내 질문 : 테이블 뷰 바인딩으로 영역 개체에 어떻게 쓸 수 있습니까? 아이디어가 있으십니까?

+0

당신이 영역에 nsarraycontroller 사용 어떻게했는지 말해 줄 수 있습니까? – Johnykutty

+0

오늘은 길에 있지만, 오늘 밤에 내가 발췌문을 줄거야;) –

+0

고마워 :). coredata와 함께 어레이 컨트롤러를 사용하십시오. 그러나 어떤 경우에는 (테이블에 300k 개의 레코드가 포함되어 있음) 필터링이 너무 느립니다. – Johnykutty

답변

1

당신은 모델 객체에 다음 (렐름 개체)를 추가 할 수 있습니다 :

override func setValue(_ value: Any?, forKey key: String) { 
    try! realm?.write { 
     self.mySetValue(value, forKeyPath: key) // bug in swift preventing directly calling super here 
    } 
} 

private func mySetValue (_ value: Any?, forKeyPath key: String) { 
    super.setValue(value, forKey: key) 
} 
+0

매력처럼 작동;) 대단히 감사합니다! –