2017-09-22 8 views
0

NSfetchedResultsController를 사용하고 있습니다.모든 controllerDidChangeContent 메서드가 완료되었을 때를 감지하는 방법

모든 controllerDidChangeContent 방법이 완료되면 CloudKit에 대한 업데이트를 보내야합니다. 내 경우에는 controllerDidChangeContent 메서드를 여러 번 호출했습니다. CloudKit에서 tableView에있는 모든 레코드의 업데이트를 받기 때문에에 cloudKit 업데이트를 호출하면 모든 행 업데이트가 호출됩니다. 그것은 나쁘다.

controllerDidChangeContent가 모든 업데이트를 완료하고 내 CloudKit 보내기 메시지를 넣을 때이를 감지 할 수 있습니까?

아니면 다른 방법이 있을까요?

답변

0

"모든 업데이트"에 대한 의미있는 정의가 없기 때문에 모든 업데이트가 완료된 것을 확인할 수있는 좋은 방법은 없습니다. 언제든지 새 업데이트를 만들 수 있으므로 가져온 결과 컨트롤러에 대해 항상 새 업데이트를 준비 할 수 있습니다.

객체의 특정 목록에 대한 업데이트가 완료되면, 당신이 가져온 결과 컨트롤러
  • 때마다 업데이트됩니다 개체 ID의 목록을 확인

    1. 같은 일을 할 수있을 보려면 업데이트를 받으면 영향을받은 개체의 개체 ID를 목록에서 제거합니다.
    2. 목록이 비어 있으면 해당 업데이트 그룹이 완료됩니다.

    보다 일반적인 해결책으로는 몇 초 동안 새로운 업데이트를받지 않은 경우에만 NSTimer을 사용하여 업데이트를 실행할 수 있습니다. 단계는 다음과 같습니다.

    1. controllerDidChangeContent에 타이머가 있는지 확인하십시오. 그렇지 않은 경우 생성하십시오.
    2. 향후을 5 초 (또는 원하는 많은 수)로 설정하십시오.

    업데이트를받을 때마다 앞으로 5 초가 지나면 타이머가 계속 지연됩니다. 업데이트없이 5 초가 지나면 타이머가 작동합니다.

  • +0

    설명해 주셔서 감사합니다. Tom! – Adelmaer