Objective c 将intValue消息发送到NSNumber会导致;“访问错误”;错误
我试图得到一个初始化为float的NSNumber的整数值,我希望intValue能够处理转换(正如文档所说)Objective c 将intValue消息发送到NSNumber会导致;“访问错误”;错误,objective-c,cocoa,macos,core-foundation,Objective C,Cocoa,Macos,Core Foundation,我试图得到一个初始化为float的NSNumber的整数值,我希望intValue能够处理转换(正如文档所说) #导入 #导入“分数.h” #导入“Complex.h” #导入“ComplexMathOps.h” int main(int argc,const char*argv[]{ NSAutoreleasePool*池=[[NSAutoreleasePool alloc]init]; NSNumber*myNum,*floatNum,*intNum; intNum=[NSNumber nu
#导入
#导入“分数.h”
#导入“Complex.h”
#导入“ComplexMathOps.h”
int main(int argc,const char*argv[]{
NSAutoreleasePool*池=[[NSAutoreleasePool alloc]init];
NSNumber*myNum,*floatNum,*intNum;
intNum=[NSNumber numberwhithint:100];
floatNum=[NSNumber numberWithFloat:99];
myNum=[floatNum intValue];
NSLog(@“%@”,myNum);
[泳池排水沟];
返回0;
}
我做错了什么?在不同的数字类型之间转换的正确方法是什么?我可以这样声明:
NSNumber * floatNum = [NSNumber numberWithFloat:99];
NSLog(@"%d",[floatNum intValue]);
[floatNum intValue]返回一个int类型,但您将myNum声明为NSNumber。
将myNum声明为int,所有操作都按预期进行。您应该做的是
myNum = [floatNum integerValue];
因为
integerValue
返回一个NSSNumber*
而
intValue
返回一个int
它们都是局部变量还是属性?intNum、floatNum和myNum是如何声明的?作为指向NSNumber的指针。很抱歉,没有发布完整的来源。我正在编辑它。出于某种原因,我希望intValue返回一个包含int而不是int的NSNumber。这就是我遇到的麻烦…O:-)谢谢!费尔南多:你也应该从编译器那里得到一个警告(类似于“赋值将整数转换为指针而不强制转换”)。不要忽略编译结果中的警告,编译器会指出您做错了什么。将myNum
声明为intValue
返回的相同类型将解决警告并修复问题。integerValue
返回一个NSInteger
myNum = [floatNum integerValue];