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

Cannot initialize a parameter of type 'id _NonNull' with an lvalue of type double

Objective C:

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

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

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

这给了我一个语法错误,说 "Cannot initialize a parameter of type 'id _NonNull' with an lvalue of type double" at var1

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

将 var1、var2、var3 转换为 NSNumber 即可解决。

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;

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