Ответ 1
Пользовательский объект по умолчанию может быть только экземпляром (или комбинацией
случаев)
NSData
, NSString
, NSNumber
, NSDate
, NSArray
или NSDictionary
.
Некоторые типы Swift автоматически соединяются с типами Foundation,
например Int
, UInt
, Float
, Double
и Bool
являются мостами
до NSNumber
. Таким образом, это может быть сохранено в пользовательских настройках по умолчанию:
var teamsData = Dictionary<String,Dictionary<String,Int>>()
В 64-битных архитектурах Int
является 64-разрядным целым числом, но на
32-разрядные архитектуры, Int
- это 32-разрядное целое число.
Целые типы фиксированного размера, такие как Int64
, не являются
автоматически соединяется с NSNumber
. Это также наблюдалось
в Swift - трансляция Int64 в AnyObject для NSMutableArray.
Поэтому для хранения 64-битных целых чисел в пользовательских значениях по умолчанию у вас есть
явно использовать NSNumber
:
var teamsData = Dictionary<String,Dictionary<String,NSNumber>>()
// Example how to add a 64-bit value:
let value : UInt64 = 123
teamsData["foo"] = ["bar" : NSNumber(unsignedLongLong: value)]