我要例外:
'NSInvalidArgumentException',原因:'+ [NSDictionary dictionaryWithObjectsAndKeys:]:每对中的第二个对象必须为非零。或者,您是否忘记了将参数列表终止为零?'
在此代码中:
img
我已经尝试了Second object of each pair must be non-nil和Second object of each pair must be non-nil中的修复程序以及几个示例。但是这些都没有帮助
答案 0 :(得分:0)
我发现有时可以帮助重新格式化代码以提高可读性...
如果您更改此行:
NSDictionary *answer6Row1Cell1TextDic = [NSDictionary dictionaryWithObjectsAndKeys:@"810-L50-%d",rowCount,@"DataId",[ans6Dic objectForKey:@"Cell1Text"],@"Value", nil];
收件人:
NSDictionary *answer6Row1Cell1TextDic =
[NSDictionary dictionaryWithObjectsAndKeys:
@"810-L50-%d", rowCount,
@"DataId", [ans6Dic objectForKey:@"Cell1Text"],
@"Value", nil
];
您将看到您为对象nil
有一个"Value"
键。我很确定,这不是您的意图。
注意:我想您还需要反转对象和键...
答案 1 :(得分:0)
此异常是由于带有格式说明符的字符串引起的。您应将两个 @“ 810-L50-%d”,rowCount 值都包含在一个字符串中。否则,它以 @“ 810-L50-%d” 作为键 rowCount 的对象值。
因此,键和值应更改为
.separation(function(a, b) { return (a.parent == b.parent ? 1 : 5) / a.depth; });
答案 2 :(得分:0)
您似乎试图从格式@810-L50-%d
和值rowCount
生成字符串,而没有实际调用字符串格式化方法来做到这一点。因此,您的值和键列表不同步,并且编译器报告与nil
有关的错误。
切换到现代语法并进行更正可以得到:
NSDictionary *answer6Row1Cell1TextDic =
@{ @"DataId" : [NSString stringWithFormat:@"810-L50-%d",rowCount],
@"Value" : ans6Dic[@"Cell1Text"]
};
@{ ... }
语法是字典文字,包含零个或多个<key> : <value>
对。 ans6Dic[@"Cell1Text"]
是字典索引,它查找与键匹配的值。
HTH