在Core Data
中,您可以存储Int16
,Int32
,Int64
,但它与Int
不同。它们存在的原因是什么,你如何使用它们?
答案 0 :(得分:68)
内部
在大多数情况下,您无需选择要在代码中使用的特定大小的整数。 Swift提供了一个额外的整数类型Int,它与当前平台的本机字大小相同:
在32位平台上,Int与Int32的大小相同。
在64位平台上,Int与Int64的大小相同。
除非您需要使用特定大小的整数,否则请始终在代码中使用Int作为整数值。这有助于代码一致性和互操作性。即使在32位平台上,Int也可以存储-2,147,483,648和2,147,483,647之间的任何值,并且对于许多整数范围来说足够大。
答案 1 :(得分:3)
" Int"之后的数字是指它使用了多少位。当你使用int来做一些非常简短或几乎不必要的事情时,比如列表中跟随特定参数的对象数量的运行计数,我通常使用UInt8,这是一个最大值为256的整数(2 ^ 8),最小值为0,因为它是无符号的(这是UInt8和Int8之间的差异)。如果签名,(或者没有" U"为变量添加前缀)那么它可以是负数。 Int16,Int32和Int64也是如此。使用较小尺寸的Int类型的奖金不是很大,所以如果你不想要的话,你真的不需要使用它们。
答案 2 :(得分:2)
如果您在使用32位或64位处理器的笔记本电脑或iOS设备上运行,则不会节省性能。只需使用Int。当你使用Int8时,CPU不会只使用8位,无论你使用什么,CPU都会使用它的整个位宽,因为硬件已经在芯片中...
现在如果你有一个8位CPU,那么使用Int32将需要编译器做一堆后空翻和魔术技巧来让32位Int工作
答案 3 :(得分:0)
在32位平台上,Int与Int32的大小相同,在64位平台上,Int与Int64的大小相同。
来自http://iossupportmatrix.com/的非常好的矩阵,您可以在其中找到特定设备的处理器架构。
例如,如果您制作
Int(Date().timeIntervalSince1970 * 1000)
它在iPhone 5(32位拱门)上引发致命错误:Thread 1: Fatal error: Double value cannot be converted to Int because the result would be greater than Int.max
。但是在iPhone 5S(62位拱门)上,一切都很好。
了解更多here