Dropbox iOS SDK «Сломан»?«

#ios #sdk #dropbox #dropbox-api

#iOS #sdk #dropbox #dropbox-api

Вопрос:

Я пытаюсь использовать последнюю официальную версию DropBox iOS Core SDK, в частности DBRestClient , для эффективного обновления дерева документов на моем локальном компьютере. Однако некоторые функции SDK, похоже, реализованы не так, как вы ожидаете, и мне было интересно, делаю ли я что-то не так, чего-то не понимаю или, с другой стороны, просто ищу функции, которых там нет.

В Dropbox есть (по крайней мере?) Два вида объектов, которые он хранит: файлы и папки. Если я внесу изменения в файл в Dropbox, я могу определить это по изменению строки «rev» файла.

Однако для папок строка rev не изменяется при изменении содержимого. Например, он не изменяется в ответ на любое из следующих действий:

  1. Добавление файла

  2. Удаление файла

  3. Редактирование файла

Вопрос 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 не сломан.