Cocoa 在核心数据中选择整数类型

Cocoa 在核心数据中选择整数类型,cocoa,core-data,integer,Cocoa,Core Data,Integer,当我在核心数据中创建模型时,我总是有点困惑于应该选择哪种整数类型——16、32、64。对于我目前的情况,我几乎总是需要一些简单的基本数字:一个家庭中的人数。可能是一个介于1-20之间的数字。或者,在另一个例子中,我有一个递增的案例id号……无法想象这会超过几百人 这里是交易…很明显,真正的计算机科学人对数字的看法不同,考虑到处理数字的架构、处理和存储数据所需的空间、向后兼容性、未来验证等因素。当我想到数字时,我基本上想到的是一个值被表示得有多大。所以当我在三种类型的整数中进行选择时,我基本上会对

当我在核心数据中创建模型时,我总是有点困惑于应该选择哪种整数类型——16、32、64。对于我目前的情况,我几乎总是需要一些简单的基本数字:一个家庭中的人数。可能是一个介于1-20之间的数字。或者,在另一个例子中,我有一个递增的案例id号……无法想象这会超过几百人

这里是交易…很明显,真正的计算机科学人对数字的看法不同,考虑到处理数字的架构、处理和存储数据所需的空间、向后兼容性、未来验证等因素。当我想到数字时,我基本上想到的是一个值被表示得有多大。所以当我在三种类型的整数中进行选择时,我基本上会对自己说,“这将是一个小数字,让我们使用Int 16选项…”或者“好吧,我可能会得到一个非常大的数字,所以让我们使用Int 64选项。”基本上,我选择这些数据类型的逻辑与我点炸薯条时使用的逻辑相同……如果我真的饿了,我会选择大的,如果我感到很内疚,我只会选择小的


我学到了足够多的知识,知道我没有用正确的术语来思考这个问题,但我真的不知道为什么,我也不知道选择最佳选项的适当方式。我应该真正考虑哪些因素……在Int 16、Int 32和Int 64之间进行选择的最重要标准是什么?

你做得对:最大期望值的大小。但我不太在乎。即使您选择了一个“太大”的整数,is也不会失败,只是占用了比需要更多的内存。在磁盘上


我认为不同大小的整数是不合时宜的。

这无关紧要

假设您使用的是SQLite持久存储,那么这三种整数类型都表示为SQLite
integer
字段(与核心数据的“布尔”类型相同)。在SQLite中,字段类型纯粹是建议性的,所以即使这样也没有多大意义。因此:就存储空间而言,它实际上没有什么区别。SQLite将根据整数值的大小进行自我优化,而核心数据级别上较大的int类型将不会产生任何影响

对于内存使用,它可能会产生很小的影响。如果使用64位int而不是16位int,则请求的位超过了需要的位。但是,除非你有非常大的数据集,否则你不可能有理由在意


那么,我通常的规则是对任何整数值使用整数64。

我感到惊讶和欣慰!尽管我敢打赌有些人会把你的“不同大小的整数是一个时代错误”当作是一个格斗词……这似乎是一种让人激动的事情。我应该澄清一下:它们是应用程序开发的一个时代错误。我作为嵌入式系统的硬件和软件开发人员工作了很长时间。在这样的生物圈中,你可以利用不同大小的整数。但是可可的发展呢?Cocoa知道
NSInteger
NSInteger
,两者大小相同。没人关心这个。嗨,汤姆,谢谢你的解释,我对使用Int64和Int32存储值和获取值进行计算感到困惑。我使用的是Swift,在CoreData属性类型中我使用的是Int64,在64位的iPad上,应用程序工作正常,但在32位的iPad上,应用程序崩溃,RAM的使用率一直接近100%。原因可能是什么?这是存储尽可能长的值的最佳方法。任何链接到文章将不胜感激。再次感谢。我提到:还有要点