iPhone — Запись словаря в файл: обработка ошибок

#iphone #file #error-handling #nsdictionary

#iPhone #файл #обработка ошибок #nsdictionary

Вопрос:

При сохранении NSDictionary в файл с помощью :

 - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag
  

Можно вернуть «ДА» или «НЕТ».

Существует несколько методов записи файлов, которые принимают параметр NSError.
В случае NSDictionary такого метода не существует.

Итак, если writeToFile метод возвращает NO, как я могу узнать, что произошло?

Ответ №1:

Посмотрите документы, чтобы writeToFile:atomically: узнать, какие типы данных могут быть в словаре при использовании этого метода. Если вы включите объект, не относящийся к этим базовым типам (например, ваш собственный объект), метод вернет NO. В этом случае, чтобы сохранить объекты такого типа, вам придется обратиться к другим средствам записи данных, таким как использование NSArchiver и приведение ваших объектов в соответствие с протоколом NSCoding.

Комментарии:

1. Я предполагаю, что есть много других ошибок, которые приведут к тому, что функция вернет NO, не так ли?

2. В основном это связано с тем, что вы пытались записать объект, с которым SDK не знал, как обращаться (потому что это не один из базовых типов, с которыми он может работать).

3. хорошо, но почему этот метод должен отличаться от других, которые обрабатывают объект NSError ?

4. Именно так Apple это спроектировала. 🙂 Ограничения, связанные с использованием writeToFile от NSDictionary, довольно ясны и прямолинейны. Если это не удается, это более чем вероятно, потому что существует объект, который не может быть записан «волшебным образом», подобно базовым объектам, которые поддерживает метод. На самом деле не сообщается, почему этот метод не поддерживает аргумент NSError, в то время как аналогичные методы в других классах (например, NSData) поддерживают. Отнесите это к прерогативе разработчика. 🙂