Я чувствую себя немного ошеломленным. Я знаю, как хранить любые данные «поддержки списков» в файле настроек, таких как NSArray, NSDictionary, NSString и их аналоги CF. Там нет проблем.
Теперь мне нравится хранить значения моего пользовательского объекта таким образом. Я думал, что если я реализую какой-то протокол сериализации / архивирования, я могу заставить NSUserDefaults понимать мой класс так же, как он понимает NSDictionary.
Например, реализация протокола NSCoding должна дать коду NSUserDefaults все, что ему нужно: я даю ему имена ключей вместе со значениями как plist-совместимые типы (NSString, в основном в моем случае). Но мой кодировщик даже не вызывается. (
Тогда я подумал, что должна быть хотя бы какая-то функция, которая генерирует NSDictionary из протокола NSCoding, чтобы я мог затем отправить этот dict для сохранения в prefs. В идеале, что-то вроде NSKeyedArchiver я передаю любому объекту, совместимому с NSCoding, и он дает мне NSDictionary, и наоборот. Но это не похоже на существование в рамках Apple.
Должен ли я сам написать это? Я ожидаю, что это будет довольно распространенная потребность.
Примечание: я понимаю, что NSKeyedArchiver генерирует двоичный список, который я мог бы записать в виде файла списка. Но это не то, что я хочу. Я хочу добавить содержимое этого объекта в plist-файл prefs моего приложения, т. Е. Я хочу сохранить как данные моего объекта, так и другие данные prefs в plist-файле. Это то, что не представляется возможным с данными функциями.