NSNumber 为 0 转换为 NSInteger/NSUInteger 变为 nil
Posted
技术标签:
【中文标题】NSNumber 为 0 转换为 NSInteger/NSUInteger 变为 nil【英文标题】:NSNumber with 0 convert to NSInteger/NSUInteger become nil 【发布时间】:2015-06-25 09:11:47 【问题描述】:为什么 0 的 NSNumber 不能转换为正确的 NSInteger/NSUInteger 值?
NSUInteger a = [@0 unsignedIntegerValue]; // a become nil
为什么上面代码行中的a
为零。不应该等于0
吗?
在控制台中:
(lldb) po [@0 intValue]
0
(lldb) po [@0 integerValue]
<nil>
(lldb) po [@0 unsignedIntegerValue]
<nil>
更新:
(lldb) p [@0 unsignedIntegerValue]
(NSUInteger) $0 = 0
【问题讨论】:
【参考方案1】:使用 p 而不是 po
(lldb) p [@0 integerValue]
(NSInteger) $1 = 0
(lldb) p [@0 intValue]
(int) $2 = 0
(lldb) p [@0 unsignedIntegerValue]
(NSUInteger) $3 = 0
【讨论】:
感谢您的回复。清除我自己,我将@0
分配给 NSUInteger 变量,结果是 nil
。有什么建议不要使用 NSInteger/NSUInteger?
[@0 integerValue] 不是对象。您应该使用 p 值而不是 po 对象以上是关于NSNumber 为 0 转换为 NSInteger/NSUInteger 变为 nil的主要内容,如果未能解决你的问题,请参考以下文章
在 CoreData 实体中将属性从 NSNumber 转换为 NSString - LightWeightMigration
React Native - NSNumber无法转换为NSString