Вы можете сохранить ряд простых типов переменных в пользовательских значениях по умолчанию:
* NSNumber
- это NSObject
, который может содержать исходную цифру C в стиле c типы, которые даже включают тип C/Objective-C
style BOOL
(который хранит YES
или NO
). К счастью для нас, они также соединены со Swift, поэтому для программы Swift NSNumber
может автоматически принимать следующие типы Swift:
- UInt
- Int
- Float
- Double
- Bool
Ответ Дмитрия Попова в Quora
Вспомните, как вас учили в школе, как добавлять числа, такие как 38 и 54. Вы работаете с отдельными цифрами. Вы берете самые правые цифры 8 и 4, добавляете их, получаете ответ di git 2 и 1 переносите из-за переполнения. Вы берете вторые цифры 3 и 5, добавляете их, чтобы получить 8, и добавляете переносимый 1, чтобы получить результат 9, так что весь ответ становится 92. 32-разрядный процессор делает то же самое, но вместо десятичных цифр он получает 32 -битные целые числа, алгоритмы одинаковы: работают с двумя 32-разрядными частями 64-разрядного числа отдельно, справляются с переполнениями путем переноса из нижнего в старшее слово. Это требует нескольких 32-битных инструкций, и компилятор отвечает за их правильное кодирование.
Сохранение Int64
до UserDefaults
import Foundation
let defaults = UserDefaults.standart
//Define an 64bit integer with `Int64`
let myInteger: Int64 = 1000000000000000
//Save the integer to `UserDefaults`
defaults.set(myInteger, forKey: "myIntegerKey")
// Get the saved value from `UserDefaults`
guard let savedInteger = defaults.object(forKey: "myIntegerKey") as? Int64 else { return }
print("my 64bit integer is:", savedInteger)
Сохранение 64 бит Int
в UserDefaults
путем преобразования в String
let myInteger: Int64 = 1000000000000000
let myString = String(myInteger)
//Save the `myString` to `UserDefaults`
UserDefaults.standard.set(myString, forKey: "myIntegerKey")
// Get the value from `UserDefaults`
let myString = UserDefaults.standard.string(forKey: "myIntegerKey")
let myInteger = Int64(myString!)
Ресурсы