#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 (по сути, это словарь, который автоматически сохраняется)