какой наилучший метод для хранения массива объектов в NSUserDefaults

#iphone #xml #nsuserdefaults

#iPhone #xml #nsuserdefaults

Вопрос:

Я хочу сохранить xml на iphone, который состоит из нескольких избранных элементов, выбранных пользователем приложения. Я использую TBXML (унаследованный от предыдущей разработки), и, как таковой, это не может записывать xml, я думал о том, чтобы объединить xml из каждого элемента в виде строки, а затем загрузить это примерно так:

tbxml = [[TBXML alloc] initWithXMLString:myXML]

Это не идеально, но есть ли ограничения / рекомендации для этого метода и какое было бы лучшее место для хранения этого файла?

Большое спасибо

Редактировать

Пользователь выбирает элемент в UITableView, который затем можно просмотреть в другом UITableView под названием «Мои избранные». UITableViewController отображает содержимое из XML-файла, возвращаемого с сервера. Я пытался упростить для себя задачу эффективного добавления каждого xml-файла ‘items’ в большую строку, а затем сохранить эту строку где-нибудь — либо в файле, либо в NSUserDefaults

в идеале я мог бы сохранить массив объектов по мере их добавления в избранное для последующего чтения.

объекты создаются следующим образом

 @interface Playlist : NSObject {

NSURL *imagePath;
NSString *title;
NSString *subTitle;
NSString *mediaType;
NSString *artistName;
NSString *id;

}


@property (nonatomic, retain) NSURL *imagePath;
@property (nonatomic, retain) NSString *title;
@property (nonatomic, retain) NSString *subTitle;
@property (nonatomic, retain) NSString *mediaType;
@property (nonatomic, retain) NSString *artistName;
@property (nonatomic, retain) NSString *id;

@end
  

есть ли способ сохранить массив объектов, подобный приведенному выше, в NSUserDefaults?

Спасибо

РЕДАКТИРОВАТЬ 2 Я пошел с NSUserDefaults и сохранил идентификатор для каждого элемента в виде массива

очень простой в доступе и обновлении, я создал класс PlaylistDataController с методами, подобными этому, для добавления элемента в мой ‘MyPlaylistArray’ в пользовательских настройках по умолчанию

 -(void) addItemToPlaylist: (NSString*) myID
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSMutableArray *myPlaylistArray = [NSMutableArray arrayWithArray:[defaults objectForKey:@"MyPlaylistArray"]];
    [myPlaylistArray addObject:myID];
    [defaults setObject:myPlaylistArray forKey:@"MyPlaylistArray"];
    [defaults synchronize];

}
  

Надеюсь, это кому-то поможет

Ответ №1:

Я не могу судить по предоставленной вами информации, но «избранные элементы, выбранные пользователем» звучит как NSUserDefaults, что было бы намного проще, чем xml.

Комментарии:

1. Я согласен с пользователем 697562. 1 Вы хотите взглянуть на NSUserDefaults, прежде чем пытаться использовать XML. NSUserDefaults специально разработан для того, чтобы вы могли легко сохранять и извлекать выбранные пользователем параметры. Это сэкономит вам много времени и головной боли.

2. Спасибо, ребята, за ответы. Пользователь выбирает элемент в UITableView, который затем можно просмотреть в другом UITableView под названием «Мои избранные». UITableViewController отображает содержимое из XML-файла, возвращаемого с сервера. Я пытался упростить для себя задачу эффективного добавления каждого xml-файла ‘items’ в большую строку, а затем сохранить эту строку где-нибудь — либо в файле, либо в NSUserDefaults (именно там я сейчас ищу)

3. Мне непонятно, зачем вам добавлять их все в большую строку. Разве у этих элементов нет уникальных имен? Если это так, используйте это имя для хранения каждого объекта по отдельности в NSUserDefaults (по сути, это словарь, который автоматически сохраняется)