Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 将intValue消息发送到NSNumber会导致;“访问错误”;错误_Objective C_Cocoa_Macos_Core Foundation - Fatal编程技术网

Objective c 将intValue消息发送到NSNumber会导致;“访问错误”;错误

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

我试图得到一个初始化为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 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];