NSCoder + UIDocument: совместимы ли они? - PullRequest
1 голос
/ 31 марта 2012

Это, вероятно, наивный вопрос, но я хочу перепроверить, чтобы не тратить время на UIDocument, если он не выполняет то, что я хочу.

Фон: У меня есть приложение, для которого я создал простую файловую систему для сохранения пользовательских документов как plists.У меня есть моя кодировка / декодирование все работает.Я использую некоторые примитивные типы и обрабатываю их с помощью соответствующего метода кодировщика.У меня есть система именования, и я сохраняю списки в пользовательский каталог в каталоге Library, так как это документы, к которым у пользователя не должно быть прямого доступа.(они могут экспортировать свои данные в каталог документов, если они того пожелают.

Я начал думать об «автосохранении», а затем обнаружил UIDocument - выглядит довольно здорово.

Итак, учитывая вышеизложенное,Кажется ли, что я могу использовать UIDocument? Что я сохраняю, это экземпляр пользовательского класса "Project", производный от NSObject. Он содержит набор массивов NSMutable, которые содержат экземпляры пользовательских классов, NSDictionaries и т. д. Я собираюсь через этоУчебник по UIDocument сейчас: http://www.raywenderlich.com/6015/beginning-icloud-in-ios-5-tutorial-part-1, но я не хочу обнаруживать, что он не будет работать из-за моих данных и т. Д.

Обновление: (для тех,читая дома ...; -) Добился некоторого прогресса в этом. UIDocument использует NSKeyedArchiver вместо NSCoder (Неправильно - см. ответ ниже) ноИмена методов кодирования одинаковы, поэтому было легко настроить то, что у меня уже было. Мне удалось сохранить список, который выглядит так, как будто он захватывает все данные - но я не буду знать, пока не попытаюсь прочитать все это обратно в. Получениеошибка, которую я не разобрал:

NSFileCoordinator: Обнаружена неожиданная ошибка сервера.Подробности: соединение недействительно

Не удивительно, так как я сохраняю локально, не понятно, зачем он вообще пытается подключиться к iCloud.Надеюсь, я смогу это отключить.

1 Ответ

2 голосов
/ 31 марта 2012

Я не уверен, где вы можете получить информацию об UIDocument, используя NSKeyedArchiver.Для простой реализации все, что вам нужно сделать, это предоставить NSData представление содержимого вашего документа - не имеет значения, генерируете ли вы эти данные из объектов вашей модели с помощью NSCoder, NSKeyedArchiver, NSPropertyListSerialization или какой-либо другой пользовательской схемы.

Учитывая это, я не вижу причин, по которым он не должен работать с моделью данных, которую вы описываете.

...