【问题标题】:Cannot initialize a parameter of type 'id _NonNull' with an lvalue of type double无法使用 double 类型的左值初始化“id _NonNull”类型的参数
【发布时间】:2017-10-23 07:46:00
【问题描述】:

目标 C:

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

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

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

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

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

【问题讨论】:

    标签: ios objective-c nsarray


    【解决方案1】:

    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;
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-25
        • 1970-01-01
        相关资源
        最近更新 更多