使用nsmutablearray为nsuserdefault的现有键添加新值

时间:2014-07-20 13:33:05

标签: ios objective-c nsmutablearray nsuserdefaults

我在使用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];

所有这些保存并接受空值 请帮忙。并提前谢谢

3 个答案:

答案 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