Сохранение и получение истории iphone

В своем приложении я загружаю различные типы данных, такие как изображение, аудио, видео, текст. Теперь я хочу, чтобы этот пользователь мог просматривать последние 100 загруженных элементов, даже когда он выйдет и снова откроет приложение. Для этого я создам представление, которое будет содержать представление таблицы. Табличное представление будет заполнено последними 100 загруженными элементами. Теперь я хочу реализовать это через NSUserDefaults. Для изображений, аудио и видео iphone возвращает свой путь или URL-адрес, который мне нужно будет сохранить в NSUserDefaults, но представление таблицы должно быть заполнено массивом, так как мне сохранить мои пути к файлам в NSUserDefaults или массиве, а затем получить эти элементы для заполнения моего табличного представления. ИЛИ есть ли другой лучший вариант, чем NSUserDefaults, который проще реализовать?


person user2261732    schedule 09.04.2013    source источник


Ответы (1)


Если данных больше, можно попробовать базу данных sqlite. Если это только эти данные, создание базы данных только для них кажется излишним. Вы можете сохранить массив в NSUserDefaults примерно так:

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"sd"] forKey:@"k"];
[[NSUserDefaults standardUserDefaults] synchronize];

NSArray *array = [[NSUserDefaults standardUserDefaults] objectForKey:@"k"];
if( array == nil )  {
    //No data
}
else {
    for( NSString *string in array ) {
        NSLog(@"String: %@",string);
    }
}

Обратной стороной является то, что если вы хотите сохранить настраиваемый объект в массиве, вам потребуется кодировать объекты вручную, как описано в этом сообщение

person user352891    schedule 09.04.2013
comment
Но как мне убедиться, что в массиве всегда есть 100 элементов, и они продолжают заменяться новыми, недавними? - person user2261732; 09.04.2013
comment
Получив массив из NSUserDefaults, измените его, сделайте из него изменяемый массив. Когда вы запишете его обратно, он перезапишет старый массив. Вам решать, что содержит массив, приведенный выше код будет хранить любой базовый производный класс NSObject, который вы ему дадите. - person user352891; 09.04.2013