Така че съм нов в iOS, но съм малко объркан от сложността на една проста задача. Опитвам се да съхраня моя персонализиран клас NSObject, наречен „Превозно средство“ в NSUserDefaults. Очевидно това не може да бъде направено, така че първо ще трябва да го кодирам в NSDATA. Глоба.
Но това означава, че трябва да кодирам всяко свойство на класа също и в декодирането...
В моя клас превозни средства...
- (void) encodeWithCoder: (NSCoder *) coder
{
[coder encodeInt: x forKey: @"x"];
[coder encodeInt: y forKey: @"y"];
[coder encodeInt: direction forKey: @"direction"];
} // encodeWithCoder
- (id) initWithCoder: (NSCoder *) coder
{
if (self = [super init]) {
x = [coder decodeIntForKey: @"x"];
y = [coder decodeIntForKey: @"y"];
direction = [coder decodeIntForKey: @"direction"];
}
return (self);
} // initWithCoder
Ако в крайна сметка добавя ново свойство към класа превозно средство, трябва да добавя и логиката за кодиране и декодиране. Това е същото за създаване на копие на клас с помощта на CopyWithZone. Това оставя 3 или 4 области, където добавянето на ново свойство към клас може да се обърка.
В момента програмирам най-вече в LabVIEW и имаме способността да вземем клас и да го подадем към енкодер, който автоматично ще извърши цялото управление на версиите и свойствата.
Така че предполагам, че въпросът ми е:
- Това не се ли чува в iOS?
- Ако не е възможно, има ли начин да изброите всички свойства в клас и да напишете функция, която да прави това автоматично.