我在使用nsuserdefaults保存和检索数据时发现了一些问题。 我想做什么 - 我从viewcontroller接受用户的名字和号码,并使用nsuserdefault保存它。当我点击保存按钮时,我想从nsuserdefault中检索所有值并将其显示在tableview上。现在当我保存新数据时,我希望将这些数据添加到nsuserdefault的现有数据中。任何人都可以帮我保存和检索nsuserdefault数据。 ---------- mycode的---------------
nsuserdefaults *objdefault =[nsuserdefaults standarduserdefaults];
nameArray = [objdefault objectforkey:@"Name"];
[newNameArray addobject:txtName.text];
[nameArray addobject:newNameArray];
[objdefault setobject:nameArray forkey:@"Name"];
[objdefault synchronize];
所有这些保存并接受空值 请帮忙。并提前谢谢
答案 0 :(得分:1)
使用这些方法将名称添加到NSUserDefaults
并从NSUserDefaults
获取
要将name
添加到NSUserDefaults
来电[self addNameToUserDefaults:@"abc"];
-(void)addNameToUserDefaults:(NSString *)name number:(NSString*)number{
NSUserDefaults *objdefault =[NSUserDefaults standardUserDefaults];
NSMutableArray *nameArray = [[objdefault objectForKey:@"NameAndNumber"] mutableCopy];
if(!nameArray)
nameArray = [@[] mutableCopy];
[nameArray addObject:@{@"name":name,@"number":number}];
[objdefault setObject:nameArray forKey:@"NameAndNumber"];
[objdefault synchronize];
}
从names
致电NSUserDefaults
NSMutableArray *names = [self getAllNames];
-(NSMutableArray *)getAllNames{
NSUserDefaults *objdefault =[NSUserDefaults standardUserDefaults];
return [[objdefault objectForKey:@"NameAndNumber"] mutableCopy];
}
答案 1 :(得分:0)
在NSUSerDefaults中无法为其添加值。它只会显示最后一个值。你应该去核心数据或Sqlite。如果你对此不满意,你仍然可以使用plist来实现这一功能。
答案 2 :(得分:0)
这就是我在项目中所做的。您必须使用NSMutableDictionary来添加更多值
- (void)addUserLocation:(NSString *)username location:(NSMutableDictionary *)location
{
NSString *currentUserKey = [NSString stringWithFormat:@"%@_%@", UserDefaultsKeyLocationData, username, nil];
NSMutableArray *oldData = [[NSMutableArray alloc]init];
if ([self loadUserLocation:username] != nil) {
oldData = [self loadUserLocation:username];
}
if (![oldData containsObject:location]) {
[oldData addObject:location];
}
[[NSUserDefaults standardUserDefaults] setObject:oldData forKey:currentUserKey];
[[NSUserDefaults standardUserDefaults] synchronize];
}
- (NSMutableDictionary *)loadUserLocation:(NSString *)username
{
NSString *currentUserKey = [NSString stringWithFormat:@"%@_%@", UserDefaultsKeyLocationData, username, nil];
return [[[NSUserDefaults standardUserDefaults] objectForKey:currentUserKey] mutableCopy];
}
如果您想获取所有数据。请在代码中调用loadUserLocation