我应该使用 Core Data 中的什么 NSNumber (Integer 16, 32, 64) 来保持 NSUInteger [英] What NSNumber (Integer 16, 32, 64) in Core Data should I use to keep NSUInteger

查看:17
本文介绍了我应该使用 Core Data 中的什么 NSNumber (Integer 16, 32, 64) 来保持 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆