我应该使用 Core Data 中的什么 NSNumber (Integer 16, 32, 64) 来保持 NSUInteger [英] What NSNumber (Integer 16, 32, 64) in Core Data should I use to keep NSUInteger
问题描述
我想将 NSUInteger 保留在我的核心数据中,但我不知道应该使用哪种类型(整数 16、32、64)来适应所需的空间.
I want to keep NSUInteger into my core data and I don't know which type should I use (integer 16, 32, 64) to suit the space needed.
根据我的理解:
Integer 16 can have minimum value of -32,768 to 32,767
Integer 32 can have minimum value of -2,147,483,648 to 2,147,483,647
Integer 64 can have minimum value of -very large to very large
和 NSUInteger 是 unsigned long 的类型定义,它等于 unsigned int (目标类型-c 在 iPhone 上)
and NSUInteger is type def of unsigned long which equal to unsigned int (Types in objective-c on iPhone)
所以如果我用 numberWithUnsignedInteger: 将我的 NSUInteger 转换为 NSNumber 并将其保存为 NSNumber(Integer 32) 我可以安全地检索我的数据吗?
so If I convert my NSUInteger to NSNumber with numberWithUnsignedInteger: and save it as NSNumber(Integer 32) I could retrieve my data back safely right?
推荐答案
您真的需要 NSUInteger
的整个范围吗?在 iOS 上,这是一个无符号的 32 位值,它可以变得非常大.它将找到一个有符号的 64 位.
Do you really need the entire range of an NSUInteger
? On iOS that's an unsigned 32 bit value, which can get very large. It will find into a signed 64 bit.
但无论如何您可能不需要那么高的精度.uint32_t
的最大值是 UINT32_MAX
,即 4,294,967,295(40 亿).如果每秒递增一次,则需要 136 年以上才能达到该值.到那时您用户的 iPhone 将不会出现... :)
But you probably don't need that much precision anyway. The maximum for a uint32_t
is UINT32_MAX
which is 4,294,967,295 (4 billion). If you increment once a second, it'll take you more than 136 years to reach that value. Your user's iPhone won't be around by then... :)
这篇关于我应该使用 Core Data 中的什么 NSNumber (Integer 16, 32, 64) 来保持 NSUInteger的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!