不向NSMutableArray添加对象

时间:2012-02-29 09:10:33

标签: iphone objective-c ios nsmutablearray nsuserdefaults

我喜欢som帮助我解决这个问题,我正在使用那些不会被添加到数组中的对象。

- (IBAction)done:(id)sender{

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    NSArray *katArr = [defaults objectForKey:@"kategorier"];
    NSMutableArray *kategorier = [katArr mutableCopy];

    [kategorier addObject:[katfield text]];
    NSLog(@"la till kat: %d", [kategorier count]);
    [defaults setObject:kategorier forKey:@"kategorier"];

    NSArray *bArr = [defaults objectForKey:@"bild"];
    NSMutableArray *bilds = [bArr mutableCopy];

    [bilds addObject:valdFarg];
    NSLog(@"la till pic: %d", [bilds count]);
    [defaults setObject:bilds forKey:@"bild"];
    [defaults synchronize];

    [self dismissModalViewControllerAnimated:YES];
}

第一个对象“[katfield text]”正在添加,NSLog输出计数。 问题是我第二次用对象“valdFarg”做它,它不起作用。 我已经尝试为阵列分配内存,但这不是问题,至少我认为。

感谢。

2 个答案:

答案 0 :(得分:0)

如果NSMutableArray * bilds为nil [bilds addObject:valdFarg];不会使bilds成为一个具有一个对象的可变数组;

而不是

NSArray *bArr = [defaults objectForKey:@"bild"];
NSMutableArray *bilds = [bArr mutableCopy];

DO

NSMutableArray *bilds = [NSMutableArray arrayWithArray:[defaults objectForKey:@"bild"]];

确保它永远不会为零并且你总是有一个可以添加的可变数组。

答案 1 :(得分:-3)

也许你正在使用错误的密钥,所以它会让你返回零:

NSArray *bArr = [defaults objectForKey:@"bild"];

是不是bilds而不是bild?

NSArray *bArr = [defaults objectForKey:@"bilds"];