【发布时间】:2013-12-17 06:48:34
【问题描述】:
在按钮操作方法之后,我得到了我的自定义类对象。现在我需要在NSMutableArray中存储多个自定义对象,然后将这个数组存储在NSUserDefaults中。
这是我的代码:
-(IBAction)onClickSubmitLater:(id)sender
{
//Saving store in user defaults for later upload data.
NSMutableArray *arrayStoreList = [[NSMutableArray alloc] init];
arrayStoreList = [Util getArrayPreference:@"Store"];//arrayStoreList is the list of all stores.
Store *store = [[Store alloc] init];
store = [arrayStoreList objectAtIndex:self.selectedStoreIndex];//here i am getting particular store that i need to save in array.
//archive
NSData *dataStore = [NSKeyedArchiver archivedDataWithRootObject:store];
[[NSUserDefaults standardUserDefaults] setObject:dataStore forKey:@"resultStore"];
//unarchive
NSData *dataResultStore = [[NSUserDefaults standardUserDefaults] objectForKey:@"resultStore"];
Store *resultStore = (Store *)[NSKeyedUnarchiver unarchiveObjectWithData:dataResultStore];
NSLog(@"%@", resultStore);
}
使用上面的代码,它将单个自定义类Store 对象保存在NSUserDefaults 中。所以我想在稍后提交ibaction后将所有Store对象保存在NSMutableArray中。稍后,我将获取商店数组以将商店一一上传到服务器上。
谢谢。
【问题讨论】:
-
- (void) encodeWithCoder : (NSCoder *)encode ; - (id) initWithCoder : (NSCoder *)decode;我已经在 Store 实体中实现了。为什么要投反对票?
-
NSUserDefaults 用于存储首选项,所以问自己这个问题“是否有必要使用 NSUserDefaults”?还有许多其他选项可以持久化数据,例如存储为 plist、使用编码器和解码器等。有一个漂亮的可重用类,由 nick lockwood 编写,请查看 github.com/nicklockwood/BaseModel。我建议你使用它。谢谢!
-
是的,根据我的要求,我必须使用 userDefaults。从 Xcode 停止应用程序后。它将保持在同一家商店。
标签: ios objective-c arrays nsuserdefaults