"Create enumerators to specify your file provider's content."
파일 제공자의 컨텐트를 구체화하기 위해 열거자를 생성합니다.
열거자는 폴더 혹은 파일 제공자의 작업하고 있는 집합의 컨텐트를 제공할 수 있습니다.
폴더의 컨텐트를 구체화하기 위해 열거자를 생성하시기 바랍니다(예를 들어 파일 제공자의 루트 수준 폴더 혹은 루트 레벨 폴더의 하위 폴더).
사용자가 폴더 탐색을 시작할 때 아래처럼 작동합니다.
enumerator(for:)
메소들르 호출하고 폴더에 대한 영구적 아이덴티파이어를 전달합니다. 만약 사용자가 루트 수준 폴더를 탐색하고 있다면, rootContainer
상수를 대신 전달합니다.NSFileProviderEnumerator
프로토콜을 채택하고 있는 객체를 인스턴스화 하고 반환해야 합니다.enumerateItems(for:startingAt:)
메소드를 사용해서 파일 제공자로부터 첫 번째 batch를 가져옵니다. 이 메소드는 비동기입니다.NSFileProviderEnumerationObserver
프로토콜을 채택하고 있는 객체)에게 결과를 반환합니다.didEnumerate(_:)
메소드를 호출함으로써 아이템을 반환합니다.finishEnumerating(upTo:)
메소드를 호출합니다.finishEnumeratingWithError(_:)
메소드를 호출합니다.사용자가 아이템을 찾을 때, 시스템은 추가적인 아이템을 가져올 필요가 있는 경우 enumerateItems(for:startingAt:)
을 호출합니다. 만약 사용자가 새 디렉토리를 찾고 있다면, 시스템은 파일 제공자의 enumerator(for:)
메소드를 호출해 해당 디렉토리에 대한 새 열거자를 생성합니다. 이전 열거자는 무효화됩니다.
작업하고 있는 집합은 사용자가 특정 관심사항에 대한 아이템(문서 혹은 폴더)의 리스트입니다. 파일 제공자는 고유한 작업하고 있는 집합을 유지해야 합니다. 파일 제공자에 있어 일관적인 경험을 위해서 작업하고 있는 집합은 아래의 모든 것을 포함해야 합니다.
특별히 사용자에게 관련이 있다고 판단되는 경우 작업하는 집합에 해당 문서를 추갛할 것입니다.
작업하고 있는 집합에 있는 문서들은 기기의 스팟라이트 데이터베이스에서 인덱싱됩니다. 시스템은 변경사항이 열거될 때 이 데이터베이스를 업데이트합니다. 그러므로 작업하고 있는 집합이 사용자의 모든 기기에 걸쳐 싱크되어야 하는 것은 중요합니다. 작업하고 있는 집합에서 만들어진 모든 변경사항은 사용자의 모든 기기에 전해지고, 각각의 기기는 작업하고 있는 집합의 로컬 캐시를 유지해야하며, 이를 통해 오프라인일 때 작업하고 있는 집합을 열거하도록 해줍니다.
작업하고 있는 집합의 컨텐트를 구체화하기 위해 열거자를 생성하시기 바랍니다. 이 열거자는 폴더를 열거하기 위해 사용되는 기본적인 과정과 동일한 과정을 사용합니다. 아래의 경우는 예외입니다.
enumerator(for:)
메소드를 호출하고, workingSet
상수에 전달합니다. 모든 아이템 및 작업하고 있는 집합에 대한 모든 변경사항을 반환하는 열거자를 제공해야 합니다.