На самом деле не существует способа использования UIDocument.Я попытался сделать это в одном из моих первых применений iCloud, но без UIDocument это оказалось катастрофой.Использование UIDocument на первый взгляд кажется большой дополнительной работой, но это не так.
Вы можете легко создать подкласс UIDocument менее чем за час и заставить его работать с любым типом файла (просто установите свойство content
как NSData).Он также предоставляет многочисленные преимущества по сравнению со стандартной файловой системой:
- Отслеживание изменений
- Разрешение конфликтов файлов
- Поддержка состояния документа
- Улучшенное сохранение / открытие/ закрыть функции
Честно говоря, потратить всего час или два на чтение документации Apple, а затем ее использование стоит времени и сил.Хорошую начальную статью о хранилище документов iCloud можно найти в Документация разработчика Apple .
Я написал подкласс UIDocument, который будет работать с любым типом файлов (в частности, с NSData).Вы можете просматривать, загружать и изменять код для подкласса UIDocument на GitHub .
Создать документ:
// Initialize a document with a valid file path
iCloudDocument *document = [[iCloudDocument alloc] initWithFileURL:fileURL];
// Set the content of the document
document.contents = content;
// Increment the change count
[document updateChangeCount:UIDocumentChangeDone];
Сохранить существующий документ:
// Save and close the document
[document closeWithCompletionHandler:nil];
Сохранить новый документ:
[document saveToURL:document.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:nil];
Вы также можетесинхронизировать все файлы, хранящиеся в iCloud, с помощью NSMetadataQuery.Apple предоставляет очень хороший пример использования запроса NSMetadata для синхронизации файлов приложения.Также обязательно проверьте iCloud перед выполнением этих операций (подсказка: используйте метод ubiquityIdentityToken
в NSFileManager).
Вы также можете рассмотреть возможность использования библиотеки с открытым исходным кодом, такой как Синхронизация документов iCloud .Проект iCloud Document Sync позволяет очень легко хранить и синхронизировать файлы приложений:
Интеграция iCloud в проекты документов iOS с помощью однострочных методов кода.Синхронизируйте, загружайте, управляйте и удаляйте документы из iCloud быстро и легко.Помогает заставить iCloud «просто работать» и для разработчиков.
Почти в каждом методе синхронизации документов iCloud все, что вам нужно сделать, это передать данные вашего файла в качестве параметра, а затем обработать остальное (сохранение, синхронизация и т. д.).
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ : я являюсь одним из разработчиков проекта с открытым исходным кодом, iCloud Document Sync.Тем не менее, я считаю, что этот проект будет полезным для вас, и имеет отношение к этому вопросу.Это не продвижение или реклама.