#ios #sdk #dropbox #dropbox-api
#iOS #sdk #dropbox #dropbox-api
Вопрос:
Я пытаюсь использовать последнюю официальную версию DropBox iOS Core SDK, в частности DBRestClient
, для эффективного обновления дерева документов на моем локальном компьютере. Однако некоторые функции SDK, похоже, реализованы не так, как вы ожидаете, и мне было интересно, делаю ли я что-то не так, чего-то не понимаю или, с другой стороны, просто ищу функции, которых там нет.
В Dropbox есть (по крайней мере?) Два вида объектов, которые он хранит: файлы и папки. Если я внесу изменения в файл в Dropbox, я могу определить это по изменению строки «rev» файла.
Однако для папок строка rev не изменяется при изменении содержимого. Например, он не изменяется в ответ на любое из следующих действий:
-
Добавление файла
-
Удаление файла
-
Редактирование файла
Вопрос 1: Это ожидаемое поведение? Если да, означает ли это, что, когда я хочу узнать, изменился ли какой-либо из моих файлов Dropbox, я должен каждый раз просматривать все дерево папок?
Дельта: существует команда для получения «дельты» текущего содержимого (чего-либо, команда не принимает параметров пути), связанных со строкой «курсор». Команда выглядит так, как будто она должна возвращать запись отредактированных файлов / папок вместе с новой строкой «курсор», указывающей текущее состояние. Однако, когда я получаю дельту, содержимое всегда пустое. Если я внесу изменения в dropbox, а затем отправлю обратно предыдущий возвращенный «курсор», я все равно получу пустую дельту.
Вопрос 2: Работают ли дельты в SDK в настоящее время, и если да, может кто-нибудь сказать мне, что я делаю не так?
Ответ №1:
Вопрос 1: Да, это ожидаемое поведение. Обычно вы используете delta
для отслеживания изменений.
Вопрос 2: Да, я бы предположил, что delta
это работает. Вы не показали никакого кода, поэтому невозможно догадаться, что происходит не так.
Комментарии:
1. Могу ли я задать дополнительный вопрос — я думаю, что это все еще подпадает под действие моего первоначального вопроса — как я могу определить, был ли файл удален? Когда я добавляю файл в каталог или редактирую файл, я получаю соответствующую дельту. возвращается. Но когда я удаляю новый файл, дельта не возвращается! Я вернулся к просмотру метаданных? Кроме того, я знаю, что это звучит странно, но содержимое одной вложенной папки, в частности, никогда не отображается в дельте. Вы находили производительность SDK иногда немного неустойчивой или стабильной?
2. Вы должны получить дельта-запись для удаления. Согласно документации , когда вы возвращаете запись с путем, но без метаданных, это означает, что файл был удален. Если вы возвращаете удаление для папки, вы должны считать, что все файлы в этой папке должны быть удалены.
3. Ах, спасибо. Я не нашел более подробной документации. Что касается второй проблемы с подпапкой, я нашел причину — файл отфильтровывался (мной), потому что в его метаданных была ошибка с заглавными буквами: «docs/Other/testOther.txt «, вместо «Docs/Other/testOther.txt «. Я вижу, что есть также переменная «lowercasePath», чтобы помочь с причудливым использованием HFS (mis) путей со смешанным регистром. На самом деле, обе проблемы были связаны с фильтрацией — я также отфильтровывал удаленные пути, потому что у них не было метаданных. Спасибо за вашу помощь. Ответ: iOS SDK не сломан.