Итак, я новичок в 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?
- Если это невозможно, есть ли способ перечислить все свойства в классе и написать функцию, которая сделает это автоматически.