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

Ank*_*pta 3 objective-c nsarray ios

目标C:

我有多个类型为double,long long,NSString和int的变量,我希望将它们放入要打印为CSV文件中的一行的数组中

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

这里var1是double类型,而var2,var3是long long类型。

这给了我一个语法错误,说“无法在var1处初始化类型为'id _NonNull'的参数,类型为double的左值”

我是Objective C的新手,无法弄清楚自己在做什么。

vad*_*ian 5

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

有一个简单的解决方案:

将所有标量类型包装在快捷方式NSNumber初始化程序中@()

 double var1 = 12.0;
 NSString *var2 = @"Foo";
 NSArray *valArray = [NSArray arrayWithObjects: @(var1), var2, nil];
Run Code Online (Sandbox Code Playgroud)

或更短

 NSArray *valArray = @[@(var1), var2];
Run Code Online (Sandbox Code Playgroud)

要从double数组中获取类型,必须编写

 double var3 = valArray[0].doubleValue;
Run Code Online (Sandbox Code Playgroud)

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