Defining Your File Provider's Content

Panther·2021년 8월 11일
0

https://developer.apple.com/documentation/fileprovider/content_and_change_tracking/defining_your_file_provider_s_content

"Create enumerators to specify your file provider's content."

파일 제공자의 컨텐트를 구체화하기 위해 열거자를 생성합니다.

Overview

열거자는 폴더 혹은 파일 제공자의 작업하고 있는 집합의 컨텐트를 제공할 수 있습니다.

Enumerate a Folder

폴더의 컨텐트를 구체화하기 위해 열거자를 생성하시기 바랍니다(예를 들어 파일 제공자의 루트 수준 폴더 혹은 루트 레벨 폴더의 하위 폴더).

사용자가 폴더 탐색을 시작할 때 아래처럼 작동합니다.

  1. 시스템은 파일 제공자의 enumerator(for:) 메소들르 호출하고 폴더에 대한 영구적 아이덴티파이어를 전달합니다. 만약 사용자가 루트 수준 폴더를 탐색하고 있다면, rootContainer 상수를 대신 전달합니다.
  2. NSFileProviderEnumerator 프로토콜을 채택하고 있는 객체를 인스턴스화 하고 반환해야 합니다.
  3. 시스템은 열거자의 enumerateItems(for:startingAt:) 메소드를 사용해서 파일 제공자로부터 첫 번째 batch를 가져옵니다. 이 메소드는 비동기입니다.
  4. 열거자는 특정 폴더(아마도 원격 서버로부터)에서 아이템의 첫 번째 batch에 대한 정보를 수집합니다.
  5. 열거자는 특정 옵저버(NSFileProviderEnumerationObserver 프로토콜을 채택하고 있는 객체)에게 결과를 반환합니다.
    • 옵저버의 didEnumerate(_:) 메소드를 호출함으로써 아이템을 반환합니다.
    • batch가 완료되면 옵저버의 finishEnumerating(upTo:) 메소드를 호출합니다.
    • 만약 에러가 발생하면 옵저버의 finishEnumeratingWithError(_:) 메소드를 호출합니다.

사용자가 아이템을 찾을 때, 시스템은 추가적인 아이템을 가져올 필요가 있는 경우 enumerateItems(for:startingAt:)을 호출합니다. 만약 사용자가 새 디렉토리를 찾고 있다면, 시스템은 파일 제공자의 enumerator(for:) 메소드를 호출해 해당 디렉토리에 대한 새 열거자를 생성합니다. 이전 열거자는 무효화됩니다.

Create the Working Set and Enumerate its Content

작업하고 있는 집합은 사용자가 특정 관심사항에 대한 아이템(문서 혹은 폴더)의 리스트입니다. 파일 제공자는 고유한 작업하고 있는 집합을 유지해야 합니다. 파일 제공자에 있어 일관적인 경험을 위해서 작업하고 있는 집합은 아래의 모든 것을 포함해야 합니다.

  • 최근 아이템(가장 최근에 사용된 아이템)입니다.
  • 태그된 아이템입니다.
  • 즐겨찾는 아이템입니다.
  • 공유된 아이템입니다.
  • 최근에 삭제된 아이템입니다.

특별히 사용자에게 관련이 있다고 판단되는 경우 작업하는 집합에 해당 문서를 추갛할 것입니다.

작업하고 있는 집합에 있는 문서들은 기기의 스팟라이트 데이터베이스에서 인덱싱됩니다. 시스템은 변경사항이 열거될 때 이 데이터베이스를 업데이트합니다. 그러므로 작업하고 있는 집합이 사용자의 모든 기기에 걸쳐 싱크되어야 하는 것은 중요합니다. 작업하고 있는 집합에서 만들어진 모든 변경사항은 사용자의 모든 기기에 전해지고, 각각의 기기는 작업하고 있는 집합의 로컬 캐시를 유지해야하며, 이를 통해 오프라인일 때 작업하고 있는 집합을 열거하도록 해줍니다.

작업하고 있는 집합의 컨텐트를 구체화하기 위해 열거자를 생성하시기 바랍니다. 이 열거자는 폴더를 열거하기 위해 사용되는 기본적인 과정과 동일한 과정을 사용합니다. 아래의 경우는 예외입니다.

  • 작업하고 있는 집합의 열거자가 파일 제공자의 컨텐트를 사용자가 탐색하는 것에 의해 기인한 것이 아닌 경우입니다. 대신 시스템은 백그라운드에서 쓰팟라이트 데이터베이스를 업데이트합니다.
  • 작업하고 있는 집합 열거자를 가져오려면 시스템은 파일 제공자의 enumerator(for:) 메소드를 호출하고, workingSet 상수에 전달합니다. 모든 아이템 및 작업하고 있는 집합에 대한 모든 변경사항을 반환하는 열거자를 제공해야 합니다.
  • 시스템은 항상 작업하고 있는 집합에 대한 변경사항에 응답합니다. 만약 변경사항이 도착하고 활성화된 열거자를 갖지 않는 경우 시스템은 새로운 하나의 열거자를 요청합니다.

0개의 댓글