在NSUserDefaults上存储对象数组的最佳方法是什么

时间:2011-04-14 01:44:51

标签: iphone xml nsuserdefaults

我想在iphone上存储xml,其中包含应用用户选择的一些喜爱的项目。我正在使用TBXML(继承自prev dev)并因此无法编写xml,我正在考虑将每个项目中的xml拼接为一个字符串,然后将其加载到像这样:

tbxml = [[TBXML alloc] initWithXMLString:myXML]

这不是理想的但是这个方法有限制/建议吗?什么是存储这个文件的最佳位置?

非常感谢

修改

用户在UITableView中收藏一个项目,然后可以在另一个名为“我的收藏夹”的UITableView中查看这些项目。 UITableViewController显示从服务器返回的xml文件中的内容。我试图让事情变得简单,有效地将每个'items'xml附加到一个大字符串然后将该字符串存储在某个地方 - 无论是在文件中还是在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并为每个项目维护一个ID作为数组

非常容易访问和更新,我创建了一个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 个答案:

答案 0 :(得分:1)

我无法从您提供的信息中得知,但“用户选择的最喜欢的项目”听起来像NSUserDefaults,这比xml容易得多。