在代码中使用genericsInt – 在Core Data iOS中使用32或64位Int?

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

但是,当我想使用核心数据保存这些“Int”时,我必须select32位或64位整数。 如果可能的话,我会希望我的应用程序与iphone 5-6s兼容,因此我不太愿意为32位(我读了苹果由于更好的性能而在6s中移动到32位)。

任何解决方法来保持这部分代码的灵活性? 如果我select32位,如果代码在64位设备上运行将会发生什么?

提前致谢。

默认的Int:

  • 在32位设备= Int32
  • 在64位设备= Int64(是的,这是一个Int64只是在我的iPhone6S上testing)

但是 ,Int32和Int64都可以在32位设备上工作。 (但Int64需要更长的时间来计算32位设备)

如果您的号码小于或等于±2.147.483.647,我build议您使用Int32
公式:(2 ^(Bit – 1) – 1)甚至Int16如果小于或等于±32.767
(实际上负值可以比正值大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可以存储( 用作Int来防止可能的崩溃)