您好:)
如何保存对象,但不能在Objective C中覆盖
我尝试了NSUserDefaults但是当我添加对象时,它会覆盖!
我如何防止这种情况,因为我正在尝试在我的应用或书签中创建收藏夹,
但我不知道如何保存我想保存的那些对象。
这是我想保存的时候。
NSUserDefaults *favorite = [NSUserDefaults standardUserDefaults];
[favorite setObject:saveTip forKey:@"saveTipFavorite"];
[favorite synchronize];
但每次我推送添加到我的应用程序中的收藏夹按钮时,我都会覆盖!
我不希望它覆盖,而是创建一个新对象并附加它。
我希望你理解我:)。
答案 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
。
这不仅可以解决您的保存问题,还可以更轻松地操作您的数据。