簡體   English   中英

Swift(核心數據)中的 Int 位是否自動轉換為與設備位相同的大小?

[英]Does Int bits in Swift(Core Data) automatically cast to the same size as the device bits?

我試圖弄清楚 Core Data 中的Int32是否會在64 bits Device上顯示為32 bits64 bits ,但我找不到關於 SO 的有效答案。

我去Swift文檔,它只顯示了這個信息:

Int 在大多數情況下,您不需要選擇特定大小的 integer 來在您的代碼中使用。 Swift 提供了一個額外的 integer 類型,Int,其大小與當前平台的原生字大小相同:

在 32 位平台上,Int 與 Int32 的大小相同。

在 64 位平台上,Int 與 Int64 的大小相同。

除非您需要使用特定大小的 integer,否則請始終在代碼中使用 Int 作為 integer 值。 這有助於代碼的一致性和互操作性。 即使在 32 位平台上,Int 也可以存儲 -2,147,483,648 和 2,147,483,647 之間的任何值,並且對於許多 integer 范圍來說足夠大。

如果我在 64 位設備的核心數據中使用Int32而不是Int64 ,有人能指出我會節省一些 memory 嗎?

如果您使用的是 SQLite 持久存儲(通常人們使用 Core Data 的方式),它不會對文件大小產生任何影響。 SQLite 使用動態類型並且不限制基於列類型的值。 SQLite 的文檔說對於整數,

該值是帶符號的 integer,存儲在 0、1、2、3、4、6 或 8 個字節中,具體取決於值的大小。

因此,無論您存儲什么 integer 值,它都會根據需要使用盡可能多的字節,並且它不知道或不關心您的代碼是否使用 32 位或 64 位或其他一些值。

在 memory 中是不同的。 一個 32 位的 integer 占用 4 個字節,一個 64 位的 int 占用 8 個字節,等等。使用足夠大的任何 integer 類型來保存您需要存儲在變量中的所有值。

但與此同時,您是否擁有如此多的數據以致於這種優化會產生任何效果? 除非您有非常大的數據集,否則使用錯誤的 integer 類型不太可能對您的應用產生影響。

CoreData中的Integer 16、32、64相當於Swift int16、int32、int64。 因此,您將節省 memory 和適當大小的磁盤空間。

資料來源:APress Media, LLC,Springer Nature 2022 A. Tsadok 的一部分,Unleash Core Data

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM