Можно ли использовать этот код с массивом пользовательских объектов?

StackOverflow https://stackoverflow.com/questions/3744551

Вопрос

[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];

Если я сделаю множество пользовательских объектов, соответствующую протоколу Nscoding, то работает выше? Должен ли я сделать как пользовательский класс, так и контроллер представления, который удерживает массив пользовательских объектов, соответствующий протоколу Nscoding или просто настроен класс? Должен ли я где-нибудь использовать NskeeDarkiver?

Это было полезно?

Решение

Похоже, вам нужно будет архивировать ваш массив, либо с NSKeyedArchiver или NSArchiver. Отказ Если вы впервые архивируете массив в объект NSDATA:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myArray];

Затем вы можете хранить эти данные в nsuserdefaults, как:

[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"myArray"];

Чтобы загрузить массив, используйте:

NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"myArray"];
NSArray *myArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];

Если вы хотите использовать nsmutablearray, просто замените любой NSArray вхождения в коде выше с NSMutableArray. ИЛИ Вы можете просто NSMutableArray *myMutableArray = [myArray mutableCopy] даст вам nsmutablearray для работы с.

Но тогда эй, если вы собираетесь в беду, чтобы сделать его Nscoding соответствует, почему бы просто архивировать его в файл?

Документация, которая заставила меня думать, что вам нужно будет использовать архиватор здесь Так что вы можете проверить сами.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top