Сериализация массива данных - PullRequest
2 голосов
/ 07 июля 2010

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

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

С уважением

Ответы [ 2 ]

3 голосов
/ 07 июля 2010

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]];       
}

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

1 голос
/ 07 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...