0

내 서버와 동기화해야하는 장치에 영구적 인 데이터가 있습니다. 설계 측면에서 올바른 방향으로 가고 있습니까?MVC 및 KVO를위한 설계 지원

내가 내 로컬 개체를 반환하는 방법과 모델을 가지고,의 그것 그러나 나는 또한 서버 중 하나를 업데이트 할 필요가 있는지 확인하고 싶습니다 즉시 로컬 객체를 반환이 방법 내에서 [model objects]';

를 부르 자 이 객체들은 백그라운드 스레드에서 async NSUrlConnection을 사용하는 메소드를 실행합니다.이 메소드는 업데이트해야하는 각 객체의 JSON을 반환하여 코어 데이터에 저장합니다. Table View Controller에서 updatedObjects에 대한 값이 변경되었을 때 관찰 할 KVO를 설정 한 다음 objectTableView에 표시된 개체를 다시로드합니다.

질문 : 문제를 해결하는 올바른 방법입니까? 내가 놓친 게 있니? 어떻게 든이 문제를 개선 할 수 있습니까?

또한 업데이트되는 개체의 UITableViewCells를 사용하지 않도록 설정하고 다운로드 및 저장 단계에서 UIActivityIndicator을 표시하려고합니다.하지만 이것이 UX의 경쟁 조건을 일으키는 지 확실하지 않습니다.

질문이 있으시면이 답변을 즉시 회신 해 드리겠습니다.

답변

0

CoreData 내에 이러한 종류의 문제에 대한 지원이 있습니다. 그리고 다양한 접근법이 있습니다.

기본적으로 비동기 웹 호출을 위해 백그라운드 스레드에 새 컨텍스트를 만든 다음 로컬 데이터를 업데이트를 관리하는 새로운 수신 데이터와 비교한다는 것이 핵심입니다. 그런 다음 스레드 컨텍스트에서 주 컨텍스트로 병합을 수행합니다. 이 시점에서 CoreData에서 업데이트 된 데이터에 대한 알림을 받고 뷰를 업데이트 할 수 있습니다.

더 간단하게하기 위해 NSFetchedResultsController을 사용할 수도 있습니다.

+0

내가 뭘 계획하고있는 것처럼 보입니다. 제가 뭔가 다른 것을하고 있다면 저를 바로 잡으십시오. 현재 CoreData에있는 객체를 새로운 MOC의 백그라운드 스레드에 저장하고 값이 변경된 경우 기본 MOC와 병합 할 계획이었습니다. 내 완료 블록에서 나는'updatedObjects'의 데이터를 설정할 것이고, VC상의 옵저버는 그 알림을 받고 ui를 업데이트 할 것입니다. – mkral