Рассмотрим следующий код
[coder encodeObject: properties forKey:@"properties"];
Существуют ли какие-либо ограничения на то, какой тип объекта передается в качестве аргумента для encodeObject?Это может быть объект из пользовательского класса?
Вы можете закодировать любой объект, если он реализует протокол NSCoding (многие классы по умолчанию - такие как NSString, NSArray, NSDictionary, NSData и т. Д. - уже реализуют это протокол, и вы можете кодировать их без проблем). Если вы хотите закодировать массив или словарь пользовательских объектов, эти объекты должны будут также реализовать протокол.
NSCoding
NSString
NSArray
NSDictionary
NSData
Подробнее об этом можно прочитать в Руководстве по программированию архивов и сериализаций и Справочнике по протоколу NSCoding ...