Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
Ios int不从NSString返回相同的值_Ios_Objective C_Nsstring_Int - Fatal编程技术网

Ios int不从NSString返回相同的值

Ios int不从NSString返回相同的值,ios,objective-c,nsstring,int,Ios,Objective C,Nsstring,Int,我已将单音中的值保存为NSString。当我想转换成int时,值是一些随机数。例如,我正在调用NSString*numberCoupons=[Manager sharedInstance].userProfile.numberoftoups,po numberCoupons返回正常值:40 但问题是在下一行,当我想将字符串转换为值时:int优惠券=(int)numberCoupons;它正在返回一些随机数,等等。421414 有什么问题吗?试试int优惠券=[numberCoupons inte

我已将单音中的值保存为NSString。当我想转换成int时,值是一些随机数。例如,我正在调用
NSString*numberCoupons=[Manager sharedInstance].userProfile.numberoftoups
,po numberCoupons返回正常值:40
但问题是在下一行,当我想将字符串转换为值时:
int优惠券=(int)numberCoupons
;它正在返回一些随机数,等等。421414

有什么问题吗?

试试
int优惠券=[numberCoupons integerValue]

尝试
整数优惠券=[numberCoupons integerValue]

尝试
整数优惠券=[numberCoupons integerValue]

尝试
整数优惠券=[numberCoupons integerValue]

NumerOfcupons
显然是一个
NSNumber
对象,用于在Objective-C集合类(
NSArray
NSDictionary
等)中存储数字,因为只有对象才能存储在其中

要从对象中获取包装值,请使用:

 NSInteger coupons = [numberOfCoupons integerValue]
我建议将
numberoftups
重新定义为
NSInteger
,而不是
NSNumber
,因为与它们包装的基本类型相比,
NSNumber
对象操作起来既困难又昂贵


如果值需要进入集合类,则添加时将其包装在
NSNumber
对象中,删除时将其打开。

numerofcupons
显然是一个
NSNumber
对象,用于在Objective-C集合类中存储数字(
NSArray
NSDictionary
等)因为只有对象才能存储在其中

要从对象中获取包装值,请使用:

 NSInteger coupons = [numberOfCoupons integerValue]
我建议将
numberoftups
重新定义为
NSInteger
,而不是
NSNumber
,因为与它们包装的基本类型相比,
NSNumber
对象操作起来既困难又昂贵


如果值需要进入集合类,则添加时将其包装在
NSNumber
对象中,删除时将其打开。

numerofcupons
显然是一个
NSNumber
对象,用于在Objective-C集合类中存储数字(
NSArray
NSDictionary
等)因为只有对象才能存储在其中

要从对象中获取包装值,请使用:

 NSInteger coupons = [numberOfCoupons integerValue]
我建议将
numberoftups
重新定义为
NSInteger
,而不是
NSNumber
,因为与它们包装的基本类型相比,
NSNumber
对象操作起来既困难又昂贵


如果值需要进入集合类,则添加时将其包装在
NSNumber
对象中,删除时将其打开。

numerofcupons
显然是一个
NSNumber
对象,用于在Objective-C集合类中存储数字(
NSArray
NSDictionary
等)因为只有对象才能存储在其中

要从对象中获取包装值,请使用:

 NSInteger coupons = [numberOfCoupons integerValue]
我建议将
numberoftups
重新定义为
NSInteger
,而不是
NSNumber
,因为与它们包装的基本类型相比,
NSNumber
对象操作起来既困难又昂贵

如果值需要进入集合类,则在添加时将其包装在一个
NSNumber
对象中,在删除时将其打开。

当您写入
(int)numberoftups
时,您要求将变量
numberoftups
中的值转换为
int
类型

现在,类型为
NSString*
的变量中的值是对对象的引用,即内存地址。当(Objective-)C强制转换对整数类型的引用时,您将返回内存地址。这是您看到的“随机”值

您需要做的是向变量中的值引用的对象发送一条消息,请求它返回一个与自身等价的整数值
NSString
对此有一个方法
intValue
,因此
[numberofintvalue]
将按您的意愿执行

有一整套
xValue
方法可以获得不同精度/大小的各种整数值和浮点值

注意:如果您引用的是
NSNumber
,而不是
NSString
,则完全相同的代码可以工作

注2:如果您确实有一个
NSNumber
,则您第一次尝试的强制转换表达式可能返回一个值,该值的大小可能与内存地址的大小完全不同。这是因为某些整数值由特殊标记地址表示,这些地址实际上并不引用真实对象。这是一个您通常不会注意到的优化,除非您意外地将参考值转换为整数

HTH

当您编写
(int)numberoftups
时,您要求将变量
numberoftups
中的值转换为类型
int

现在,类型为
NSString*
的变量中的值是对对象的引用,即内存地址。当(Objective-)C强制转换对整数类型的引用时,您将返回内存地址。这是您看到的“随机”值

您需要做的是向变量中的值引用的对象发送一条消息,请求它返回一个与自身等价的整数值
NSString
对此有一个方法
intValue
,因此
[numberofintvalue]
将按您的意愿执行

有一整套
xValue
方法可以获得不同精度/大小的各种整数值和浮点值

注意:如果您引用的是
NSNumber
,而不是