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的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON ARRAY 转换为 NSNumber 数组

在 CoreData 实体中将属性从 NSNumber 转换为 NSString - LightWeightMigration

React Native - NSNumber无法转换为NSString

从 '(NSNumber) -> NSNumber' 转换为不相关类型 '(Any) -> Any' 总是失败

如何将 NSNumber 转换和比较为 BOOL?

将 NSNumber 转换为 long