如何保存对象,但不能在Objective C中覆盖?

时间:2012-07-24 19:58:25

标签: objective-c object bookmarks favorite

您好:)

如何保存对象,但不能在Objective C中覆盖

我尝试了NSUserDefaults但是当我添加对象时,它会覆盖!

我如何防止这种情况,因为我正在尝试在我的应用或书签中创建收藏夹,

但我不知道如何保存我想保存的那些对象。

这是我想保存的时候。

NSUserDefaults *favorite = [NSUserDefaults standardUserDefaults];

[favorite setObject:saveTip forKey:@"saveTipFavorite"];

[favorite synchronize];

但每次我推送添加到我的应用程序中的收藏夹按钮时,我都会覆盖!

我不希望它覆盖,而是创建一个新对象并附加它。

我希望你理解我:)。

3 个答案:

答案 0 :(得分:2)

它被覆盖,因为每个键只能有一个对象,并且每次都要更改它。您要做的是存储数组而不是单个对象,并将其设置为用户默认值中的键。

初​​始化:

NSMutableArray *objectArray;
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSArray *oldSavedArray = [currentDefaults objectForKey:@"savedArray"];
if (oldSavedArray != nil)
   objectArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];
else
   objectArray = [[NSMutableArray alloc] init];

请注意,我们正在从NSArray转换为NSMutableArray,因为用户默认值只能存储不可变(NSArray)版本。

然后添加项目:

[objectArray addObject:whatever];
[currentDefaults setObject:objectArray forKey:@"savedArray"];

如果您要做很​​多事情(大量数据),您可以考虑使用Core Data,它会更快。 NSUserDefaults并非真正用于存储大量数据。

答案 1 :(得分:0)

您保存的对象可以是数组。创建一个数组以保存提示并将该对象赋予NSUserDefaults

答案 2 :(得分:0)

NSUserDefaults适用于简单的内容,但如果您希望应用处理大量数据,则需要开始使用CoreData

http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/CoreData/cdProgrammingGuide.html

这不仅可以解决您的保存问题,还可以更轻松地操作您的数据。