Ios int不从NSString返回相同的值
我已将单音中的值保存为NSString。当我想转换成int时,值是一些随机数。例如,我正在调用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*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
,而不是