的谷歌驅動器型號是內部的指針向家長和孩子一個平面模型,投射成一個傳統的基於樹的模型需要慎重考慮任何實現。
由於我不在iOS上工作,我會盡量保持它的一般性,指的是JAVA代碼片段;它應該很容易翻譯成任何語言(相信iOS有一些'C'味道的國王)。
因此,每次檢索文件夾/文件的嘗試都必須先從Drive根開始,然後枚舉它的子項。例如,在新的Google Drive API(GDAA)中,您也可以使用。
DriveFolder.listChildren(gac).await()
DriveFolder.queryChildren(gac, query).await();
其中 'GAC' 是GoogleApiClient實例和 '查詢' 來自Query.Builder()...。當你繼續前進的時候,你會得到對象的元數據,給你關於對象的全部信息(mime,status,title,type,...),你處理重複項(是的,你可以有多個文件夾/文件具有相同的名稱 - 但唯一的ID)。當你點擊文件夾時,開始另一個迭代。在這個過程中,您可以使用文件夾'/ files'唯一的RESOURCE ID'(您在文件/文件夾的http地址中看到的字符串)來緩存結構。
目前Java/Android世界有兩種不同的API,舊的RESTFul API和the new GDAA(我不知道它如何適用於iOS)。我有some code here,顯示樹下的遞歸(buildTree()),以及處理(findFirst())中的重複文件/文件夾名稱的代碼。但不幸的是它是GDAA風格下的Java,所以它可能對你的情況不是很有用。
還有一件值得一提的是,您可以'列出'或'查詢'只有一個文件夾級別的孩子(而不是子文件夾),或者您可以查詢(但不是列出)當前範圍內的全部對象FILE僅在GDAA中有作用域,在RESTful中有許多作用域)。
謝謝 - 這正是我一直在尋找的。我懷疑Google Drive模型是某種帶有指針的扁平事物,這部分解釋了爲什麼使用文件夾很有挑戰性。 java代碼也很有用,因爲我的白天工作是java(我只能在晚上和週末做iOS,直到我的公司認爲它很有用)。無論如何 - 再次感謝。 – user3435771