Итак, я новичок в iOS, но я немного озадачен сложностью простой задачи. Я пытаюсь сохранить свой собственный класс NSObject под названием «Транспортное средство» в NSUserDefaults. Очевидно, этого не может быть сделано, поэтому сначала мне нужно сначала закодировать его в NSDATA. Хорошо.Кодировать все свойства NSObject в 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, и у нас есть возможность взять класс и передать его кодеру, который автоматически выполнит всю обработку версий и свойств.
Так что я думаю, мой вопрос:
- Разве это не слышало в прошивке?
- Если это невозможно, можно ли перечислить все свойства в классе и написать функцию для этого автоматически.
Я использую [accessorizer] (http://www.kevincallahan.org/software/accessorizer.html), чтобы создать весь шаблонный код. –