Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在代码中使用通用整数-在核心数据iOS中使用32或64位整数?_Ios_Iphone_Core Data_32bit 64bit - Fatal编程技术网

在代码中使用通用整数-在核心数据iOS中使用32或64位整数?

在代码中使用通用整数-在核心数据iOS中使用32或64位整数?,ios,iphone,core-data,32bit-64bit,Ios,Iphone,Core Data,32bit 64bit,我正在用swift编写一个应用程序,通过苹果的核心数据保存数据。在我的代码中,所有整数都声明为“Int”,因为这更灵活,编译器会根据代码运行的设备调整这些Int 然而,当我想使用核心数据保存这些“Int”时,我必须选择32位或64位整数。如果可能的话,我希望我的应用程序能与iphone5-6s兼容,因此我对32位的应用程序犹豫不决(我了解到苹果在6s中移动到32位是因为性能更好) 有什么变通方法可以使这部分代码保持灵活性吗?如果我选择32位,如果代码在64位设备上运行会发生什么 提前感谢。默认整

我正在用swift编写一个应用程序,通过苹果的核心数据保存数据。在我的代码中,所有整数都声明为“Int”,因为这更灵活,编译器会根据代码运行的设备调整这些Int

然而,当我想使用核心数据保存这些“Int”时,我必须选择32位或64位整数。如果可能的话,我希望我的应用程序能与iphone5-6s兼容,因此我对32位的应用程序犹豫不决(我了解到苹果在6s中移动到32位是因为性能更好)

有什么变通方法可以使这部分代码保持灵活性吗?如果我选择32位,如果代码在64位设备上运行会发生什么

提前感谢。

默认整数:

  • 在32位设备上=Int32
  • 在64位设备上=Int64(是的,它是一个Int64,只需在我的iPhone 6S上测试即可)
但是Int32和Int64都可以在32位设备上工作。(但在32位设备上计算Int64需要更长的时间)

如果您的数字小于或等于±2.147.483.647,我建议您使用Int32
公式:(2^(位-1)-1) 如果小于或等于±32.767,甚至是Int16
(实际上负值可以比正值大1:范围为Int32-2.147.483.648…2.147.483.647)

如果在coreData中使用Int32,请确保不超过此数字,并将Int强制转换为?Int32保存时(作为?因为理论上它可以是一个更高的数字)
将Int32加载到Int时总是成功(使用:as!Int

如果在coreData中使用Int64,只需将Int强制转换为!Int64保存时(即使在32位设备上也会成功,但速度可能会稍慢,但如果不经常保存/加载,则不会出现任何问题)

但在加载时要小心,将Int64转换为Int可能会失败,因为理论上Int64存储的数字可能比32位设备上的Int存储的数字大(使用as?Int以防止可能的崩溃)

解决方案可能是保留两个数据模型,然后在中选择适当的一个runtime@heximal或者只使用Int32,因为他不需要存储超过2.147.483.647的数字。即使如此,他也应该首先使用Int64而不是Int,以确保他的应用程序能够在32位设备上运行。然后将其作为Int64存储在coreData中。