在代码中使用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来防止可能的崩溃)