无法初始化类型' id _NonNull'的参数。左值为

时间:2017-10-23 07:46:00

标签: ios objective-c nsarray

目标C:

我有多个double,long long,NSString和int类型的变量,我想把它放在一个数组中,作为CSV文件中的单行打印

NSArray * ValArray = [NSArray arrayWithObjects:var1,var2,var3,var4,var5,nil];

这里var1的类型为double,var2,var3的类型为long long。

这给了我一个语法错误,说明"无法初始化类型' id _NonNull'左边的左值"在var1

我是Objective C中的新手,无法弄清楚我做错了什么。

2 个答案:

答案 0 :(得分:5)

Objective-C中NSArray(和NSDictionary)的内容必须是对象。所有标量类型int double等都不是对象。

有一个简单的解决方案:

在快捷方式NSNumber初始化程序@()

中包装所有标量类型
 double var1 = 12.0;
 NSString *var2 = @"Foo";
 NSArray *valArray = [NSArray arrayWithObjects: @(var1), var2, nil];

或更短

 NSArray *valArray = @[@(var1), var2];

要从您必须编写的数组中取回double类型

 double var3 = valArray[0].doubleValue;

附注:变量名称应以小写字母开头。

答案 1 :(得分:1)

将var1,var2,var3转换为NSNumber将解析它。