2013-05-10 4 views
2

можно синхронизировать файлы ICloud, просто создавать файлы в контейнере вездесущности, как это:Можно ли использовать API NSFileManager для управления файлами в iCloud?

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSURL *containerURL = [fileManager URLForUbiquityContainerIdentifier:nil]; 
NSURL *dirURL = [containerURL URLByAppendingPathComponent:@"files" isDirectory:YES]; 

NSError *error; 
[fileManager createDirectoryAtURL:dirURL withIntermediateDirectories:NO attributes:nil error:&error]; 

NSURL *icloudURL = [dirURL URLByAppendingPathComponent:@"somefile.txt"]; 
[fileManager createFileAtPath:[icloudURL path] contents:someData attributes:nil]; 

Это работает и, кажется, простой и простой способ поместить файлы в ICloud и все же я не мог найти такую примеры в документации или подсказки, что такое использование API разрешено. Уточнение вопросов: Это безопасно? Возможно ли это в документации Apple API? Есть ли какие-либо известные проблемы?

Примечания:

  • Ищу простейшим способом для управления кучу несвязанных файлов в ICloud.
  • Этот подход проще для setUbiquitous: itemAtURL: destinationURL: error: -method, потому что он позволяет сохранять файлы ad-hoc из NSData без создания временного файла в изолированной программной среде приложения и перезаписывает существующие файлы без дополнительной проверки на этот случай ,
  • В документе setUbiquitos-API говорится: «У вашего приложения должен быть активный объект презентационного файла, настроенный для контроля указанного файла или каталога перед вызовом этого метода». и в руководстве по дизайну iCloud говорится: «Всегда используйте координатор файла для доступа к файлу или файлу iCloud». Это заставляет меня беспокоиться, если данный код проблематичен.
  • Я вижу необходимость в FileCoordinator/FilePresenter, когда согласованность многих файлов f.e. в каталоге пакетов необходимо поддерживать. Но это слишком много накладных расходов, если вы просто хотите управлять кучей независимых файлов в облаке. Особенно учитывая характер этого API.
  • Я рассмотрел использование UIDocument: обработка папки в качестве документа не похожа на хорошую подгонку, учитывая класс load/store-everything-at-once. Рассмотрение каждого файла как документа выглядит нормально, но довольно громоздко.

ответ

0

Есть одна вещь, я уверен, что работа с iCloud не проста!

Слишком много исключений, которые, как я думал, они никогда не возникали, но они все еще имели место. (например: sometime iCloud отправил в мое приложение объект NSConcreteData, но мое приложение использовало NSFileWrapper; иногда мой файл стал папкой, и через несколько минут он вернулся к файлам)

Существует много способов доступа к iCloud. Это простой способ: http://www.raywenderlich.com/12779/icloud-and-uidocument-beyond-the-basics-part-1

Помните всегда осторожны при работе с ICloud (все может случиться)

Успехов