2012-06-05 4 views
0

Я пытаюсь вытащить файл в iCloud из одного из моих приложений, но иногда нет способа отслеживать, есть ли файл уже в iCloud или нет. После маркировки файла как вездесущего, у меня есть метод, который периодически проверяет состояние файлов через NSMetadataQuery. Когда я получаю результаты назад я использую эти ключи для статуса файла:iCloud upload progress and keys

NSNumber *isUploaded = [file valueForAttribute:NSMetadataUbiquitousItemIsUploadedKey]; 
NSNumber *isUploading = [file valueForAttribute:NSMetadataUbiquitousItemIsUploadingKey]; 
NSNumber *uploadPercent = [file valueForAttribute:NSMetadataUbiquitousItemPercentUploadedKey]; 

Это, кажется, работает иногда, но в другое время isUploaded значение 0, а значение isUploading также 0! Значение uploadPercent на самом деле всегда равно 0. Когда я перехожу в приложение «Настройки» своего устройства и проверяю файлы для своего приложения, файлы уже указаны там, поэтому я не уверен, почему ключ «NSMetadataUbiquitousItemIsUploadedKey» вернет 0?

Любая помощь приветствуется! Благодаря!

+0

Я думаю, либо не много людей используют API, ICloud или никто не нашел этот вопрос до :( –

+0

Удалось ли вам отслеживать прогресс файла, закачанный в ICloud похож на WhatsApp Does.? –

ответ

5

Я пытаюсь сделать то же самое. В руководстве iCloud попробуйте NSURLUbiquitousItemIsUploadedKey вместо NSMetadataUbiquitousItemIsUploadedKey. Дайте мне знать, если это сработает для вас. Я до сих пор не смог добиться этого. Вот раздел из руководства:

Определение передачи статуса файла или каталога

Items вы пишете в директории контейнера ICloud автоматически передаются на сервер ICloud как можно быстрее. Однако, в зависимости от сети и типа устройства, файл не может быть загружен на сервер или сразу загружен на устройство. В случаях, когда вам нужно знать состояние файла, вы можете использовать метод getResourceValue:forKey:error:NSURL для извлечения значения для одного из следующих атрибутов:

  • NSURLIsUbiquitousItemKey -Интерит, хранится ли элемент в iCloud.

  • NSURLUbiquitousItemIsDownloadedKey -Исследует, загружена и доступна текущая версия продукта.

  • NSURLUbiquitousItemIsDownloadingKey -Игнорирует текущую версию текущей версии продукта и пока недоступен.

  • NSURLUbiquitousItemPercentDownloadedKey -Для загрузки предмета указывается, какой процент изменений уже был загружен. Вы можете использовать это значение для обновления индикаторов выполнения.

  • NSURLUbiquitousItemIsUploadedKey -Игнорирует, что локально внесенные изменения были успешно загружены на сервер iCloud.

  • NSURLUbiquitousItemIsUploadingKey -Игнорирует, что локально внесенные изменения загружаются на сервер iCloud.

  • NSURLUbiquitousItemPercentUploadedKey - Для загружаемого объекта указывает, какой процент изменений уже был загружен на сервер.

  • Несмотря на то, что iCloud-сервер агрессивно переносит изменения, которые делает ваше приложение локально, устройства iOS обычно не вытягивают изменения с сервера, пока вы не попытаетесь получить доступ к файлу. Если вы попытаетесь открыть файл, который в настоящее время загружается, iOS блокирует поток, выдавший открытый запрос, до тех пор, пока файл не будет загружен и не будет доступен для использования. Таким образом, если вы обеспокоены потенциальными задержками, проверьте текущее состояние файла по мере необходимости и, возможно, обновите свой пользовательский интерфейс, чтобы убедиться, что файл еще не доступен или в настоящее время загружается.

    Для получения дополнительных сведений об атрибутах, которые вы можете запросить для URL-адресов, см. Ссылка на NSURL-класс.

    +0

    ли ты получите какой-либо успех, чтобы получить код, работающий с Exact% загрузки и загрузки, я просто смог получить только статус 1/0. –