2010-07-07 2 views
2

В настоящее время я пишу и читаю из массива данных и использую индекс каждого элемента для достижения чего-то. Мне нужен способ хранения этого массива, я посмотрел на пользовательские значения по умолчанию, но в нем хранится словарь с использованием ключей. Я не буду знать, какой ключ был сохранен.Сериализация массива данных

Что лучше всего было хранить массив данных на iphone?

С уважением

ответ

3

NSKeyedArchiver, конкретный подкласс из NSCoder, обеспечивает способ кодирования объектов (и скалярные значения) в архитектурно-независимый формат, который может быть сохранен в файле.

Таким образом, вы можете сериализовать все, что угодно в файл:

// need a path 
- (NSString*) getPath 
{ 
    NSString* path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
    return [path stringByAppendingPathComponent:@"someInfo"]; 
} 

// save an array 
- (void) save:(NSArray*)array 
{ 
    [NSKeyedArchiver archiveRootObject:array toFile:[self getPath]];  
} 

// get that array back 
- (NSArray*) load 
{ 
    return [NSKeyedUnarchiver unarchiveObjectWithFile:[self getPath]];  
} 

Вы можете сериализовать словарь массивов, если у вас есть больше, чем тот, который вы хотите сохранить.

+0

Цените его. : D – jarryd

+0

С чем связана «someInfo»? – jarryd

+0

Это имя файла. –

1

Можно хранить массив в NSUserDefaults. Однако он зависит от типа объектов, которые хранятся в массиве. NSKeyedArchiver - еще один хороший вариант, так как хранит массив как plist. Возможно, даже CoreData - лучший выбор для вас. Все зависит от ожидаемого размера ваших данных и от того, как вы его используете. NSKeyedArchiver кажется достаточно хорошей средой для многих ситуаций, но для ответа на ваш вопрос требуется дополнительная информация.

+0

Я просто храню NSStrings в массиве. Я беру ввод пользователя из текстового поля (пользователь сохраняет заголовок для «избранного», который я добавляю в индекс изображения, который они хотели сохранить) Затем, читая из массива, я просто отключил индекс, заполнял табличное представление со всеми заголовками в массиве. Затем пользователь может выбрать любимую, и ссылка на изображение извлекается из массива и загружается на экран. Он не должен содержать более 50 строк. – jarryd

+0

Похоже, что хранение в plist будет наиболее подходящим в вашем случае. Я предлагаю переключиться на использование NSDictionary, но вместо добавления индекса изображения. Пользовательский класс для вашего любимого может быть даже лучше, но вы должны использовать NSKeyedArchiver. –

+0

Я пробовал NSDictionary, но проблема в том, что я использую индекс массива для доступа к значениям, которые я не знаю. Все, что я хочу знать, это хранить массив, а затем загрузить его. Сейчас я читаю и пишу массив, поэтому просто хочу сериализовать и десериализовать его. – jarryd

Смежные вопросы