0

У меня есть объект. В качестве свойств он имеет только два NSStrings.Нужно ли использовать NSKeyedArchiver?

Я создал массив для хранения нескольких из этих объектов.

Нужно ли использовать NSKeyedArchiver для сохранения этого массива на диск или я могу использовать NSUserDefaults?

ответ

0

Вы можете использовать [[NSUserDefaults standardUserDefaults] setObject:myArray forKey:myKey]; для записи и [[NSUserDefaults standardUserDefaults] arrayForKey:myKey]; для чтения (нет setArray:forKey:, поскольку это не нужно).

Кроме того, если у вас есть массив, который вы не хотите хранить в NSUserDefaults, есть возможность записи и чтения массивов: -[NSArray writeToFile:atomically:] и +[NSArray arrayWithContentsOfFile:]. Существуют также те же методы, что и для NSDictionary для удобного чтения/записи словарей. Конечно, вы всегда можете использовать NSKeyed (Un) Archiver.

+0

Если я попытаюсь сделать это, я получу ошибку «попытка вставить неценовое значение». –

+0

@awakeFromNib: Что ты сделал? Я просто проверил этот код: 'NSArray * array = [NSArray arrayWithObjects: @" One ", @" Two ", nil]; \t [[NSUserDefaults standardUserDefaults] setObject: массив forKey: @ "TestKey"]; 'который работает точно так, как ожидалось. – DarkDust

1

Если ваш объект является обычным классом, вам необходимо использовать NSKeyedArchiver, прежде чем вы поместите его в NSUserDefaults. См. here.