1

你好 :)

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

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

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

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

这是我试图保存的时候。

NSUserDefaults *favorite = [NSUserDefaults standardUserDefaults];

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

[favorite synchronize];

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

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

我希望你能理解我 :)

4

3 回答 3

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];

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

然后添加一个项目:

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

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

于 2012-07-24T20:05:02.747 回答
0

NSUserDefaults is fine for simple stuff, but if you want your App to handle significant amount of data, you will want to start using CoreData.

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

Not only will this solve your saving problem, it will also make it easier to manipulate your data.

于 2012-07-24T21:15:17.907 回答
0

您保存的对象可以是一个数组。创建一个数组来保存提示,并将该对象提供给NSUserDefaults.

于 2012-07-24T20:04:36.377 回答