Un oggetto predefinito utente può essere solo un'istanza (o una combinazione di istanze ) di NSData
, NSString
, NSNumber
, NSDate
, NSArray
o NSDictionary
.
Alcuni tipi di Swift vengono automaticamente ponticellati su tipi Foundation, ad es. Int
, UInt
, Float
, Double
e Bool
sono collegati a ponte a NSNumber
. Quindi questo potrebbe essere salvata nella predefinite dall'utente:
var teamsData = Dictionary<String,Dictionary<String,Int>>()
On architetture a 64 bit, Int
è un intero a 64 bit, ma architetture a 32 bit, Int
è un numero intero di 32 bit.
I tipi interi fissi dimensioni come Int64
sono non ponte automaticamente NSNumber
. Ciò è stato osservato anche in Swift - Cast Int64 to AnyObject for NSMutableArray. Pertanto, per archiviare interi a 64 bit nelle impostazioni predefinite dell'utente che avete utilizzare NSNumber
esplicitamente: risposta
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)]
fonte
2015-01-27 18:50:26
Hai mai ricevuto un errore SIGABRT dall'utilizzo di questo? – Chris
Non ho. Quale versione di Swift stai usando? –
3.0, credo. Per ora sto usando Int, speriamo che funzioni prima che finisca i numeri interi a 32-bit ... – Chris