我有这个方法=>
-(id)initWithLocationName:(NSString *)locatNm latitude:(double)lati longitude:(double)longi xCoord:(double)xco yCoord:(double)yco;
在这种方法中,我需要将nil值赋给xCoord& YCOORD。如何将nil指定为double?
答案 0 :(得分:12)
nil
用于Objective-C对象,double
是原始数据类型(即,它不是Objective-C对象),因此您无法将nil
分配给一个double
变量。
如果0.0
不能代表缺少值,则可以使用NAN
和isnan
。例如:
#include <math.h>
double x = 0.0;
double y = NAN;
if (isnan(x)) NSLog(@"x is not a number"); // this won't be logged
if (isnan(y)) NSLog(@"y is not a number"); // this will be logged
答案 1 :(得分:4)
Nil只是0.将它们设置为0会将它们设置为nil做同样的事情。
答案 2 :(得分:3)
你的双倍值不能为零。它不是一个引用类型,它是一个原始的。你到底想要完成什么?
除了:
如果您没有尝试在此方法中使用它,则可以使用[NSNumber numberWithFloat:0.4f]
并且作为任何指针,NSNumber *number = nil;
完全有效。但是在这种情况下它不起作用,因为该方法需要double
。
答案 3 :(得分:2)
您只能将nil
指定给指针类型。但是,您可以将0.0分配给double
。
答案 4 :(得分:2)
您可以使用NSNumber。
答案 5 :(得分:0)
您只能为指针指定nil。我会使用一个特殊值,通常是-1,而不是使用nil。如果你真的需要使用nil,你需要将双重包装在NSNumber中。