2012-02-29 118 views
-1

想要帮助解决这个问题,我对不会添加到数组的对象有帮助。不向NSMutableArray添加对象

- (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”做它,它不工作。 我曾尝试为数组分配内存,但这不是问题,我想至少。

谢谢。

+1

计数是什么? 0?你确定'bArr'不是零? – 2012-02-29 09:14:00

+0

用户默认的对象是否可能损坏?我想这可能会发生。 – 2012-02-29 09:16:42

+0

@ xlc0212计数为0,且bArr不为零。 – 2012-02-29 09:18:41

回答

-3

可能你用错了钥匙,所以它的返回你NIL:

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

这难道不是bilds而不是图片报?

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

我不知道谁是-1 ...但这不是愚蠢的...因为变量是他的代码中的图片...有时会发生... – Ganzolo 2012-02-29 09:35:01

+0

这个答案应该在评论中,而不是作为答案。这是一个你问的问题 - 你没有说明问题的答案是什么。 – 2012-02-29 09:49:00

+0

好的,对不起,我是新的。我只是试图帮助。我采取了答案,因为我想发布一些在回答模式中更好的代码。我只是觉得在这个问题上付出如此多的负担并不意味着,因为我正在努力提供帮助。我没有说完全错误的东西......这可能是问题... – Ganzolo 2012-02-29 09:56:21

0

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

而不是

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

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

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

+0

虽然确实'arrayWithArray:'似乎允许一个零参数这个事实是没有记录。这种方法不会引发异常(参见'stringWithString:')也有点不典型。 – 2012-02-29 09:39:20

+0

stringWithString:是一个异常,这就是为什么它的异常可能被记录下来,其他一切如dictionaryWithDictionary:dataWithData:etc取零。 – valexa 2012-02-29 12:32:23

+0

'stringWithString:'被记录为引发异常。 'arrayWithArray:'**没有记录**以使用零参数。它甚至可能会在未来的操作系统版本中升级。依赖方法的无证行为至少是不好的风格。 – 2012-02-29 12:37:42