如果取消选中框,对象的数量会与键的数量不同吗?

时间:2016-09-15 15:56:57

标签: ios objective-c

我的视图控制器上有一组复选框,它们运行良好。长话短说:用户选中一个框,然后点击保存按钮。检查框后保存会将值“yes”发布到我的数据库中的字段。但是,如果没有选中框,并且我的用户点击“保存”,我就会抛出此错误:

  

由于未捕获的异常而终止应用   'NSInvalidArgumentException',原因:'*** - [NSDictionary   initWithObjects:forKeys:]:对象的数量(0)与count的数量不同   键(1)'

如果没有选中复选框,如何阻止应用崩溃,因为选中复选框不是强制性的?下面的代码(如果您需要更多信息,请告诉我 - 删除按钮操作中错综复杂的'保存'部分)。

viewcontroller.m

- (IBAction)myCheck:(id)sender {

    if (!checked17) {

        [myCheck setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal];
        checked17 = YES;

        self.box = @"Yes";

    }

    else if (checked17) {

        [myCheck setImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];
        checked17 = NO;

            self.box = @"No";
    }


}

- (IBAction)submitButton:(id)sender {

    NSDictionary *petOption = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:self.box, nil] forKeys:[NSArray arrayWithObjects:@"value", nil]];
    NSDictionary *checkedFinish = [NSDictionary dictionaryWithObject:[NSArray arrayWithObject:petOption] forKey:@"und"];


    [nodeData setObject:checkedFinish forKey:@"field_haveapet"];

}

1 个答案:

答案 0 :(得分:1)

dictionaryWithObjects计算数组大小,直到第一个nil出现。

所以当self.boxnil时,第一个参数在这里被视为空数组:

[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:self.box, nil] forKeys:[NSArray arrayWithObjects:@"value", nil]

您需要以不同方式处理这种情况,例如,NSDictionaryself.box时显式创建空nil