2012-03-30 3 views
1

Это, вероятно, наивный вопрос - но я хочу дважды проверить, чтобы не тратить время на UIDocument, если он не делает то, что я хочу.NSCoder + UIDocument: совместимы ли они?

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

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

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

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

NSFileCoordinator: была сигнализирована удивительная ошибка сервера. Детали: Connection invalid

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

ответ

2

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

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

+0

Был следующим кодом: http://stackoverflow.com/questions/8479198/icloud-how-to-save-archive-containing-array-of-custom-objects - не нашел много других примеров использования сложные данные с UIDocument –

+1

Дело в том, что все UIDocument заботится о получении NSData - ему все равно, что находится в данных или как он туда попал. Вы делали NSData раньше с помощью NSCoder, поэтому вы можете использовать те же данные с UIDocument. (Не означает, что вы не можете видеть другие проблемы с UIDocument, но, по крайней мере, они не будут иметь отношения к вашему дизайну модели. Поместите некоторые данные/код, и мы можем помочь диагностировать.) – rickster

+0

Cool - спасибо за разъяснение , Сейчас я работаю грубо. Проблемы теперь больше @, что я не разрабатывал свои классы с моделью «документ» в виду, поэтому у меня есть некоторые пересмотры. Любые мысли о 'NSFileCoordinator: была сигнализирована удивительная ошибка сервера. Подробности: Ошибка подключения недействительна? –

 Смежные вопросы

  • Нет связанных вопросов^_^