Sto cercando di convertire una (un Dizionario Swift) [String : String]
-NSDictionary
, per un uso successivo su una libreria JSON che produce una stringaCome faccio a convertire rapido dizionario per NSDictionary
var parcelDict = ["trackingNumber" : parcel.number,
"dstCountry" : parcel.countryCode];
if (parcel.postalService != nil)
{
parcelDict["postalService"] = parcel.postalService;
}
var errorPtr: NSErrorPointer
let dict: NSDictionary = parcelDict
var data = NSJSONSerialization.dataWithJSONObject(dict, options:0, error: errorPtr) as NSData
return NSString(data: data, encoding: NSUTF8StringEncoding)
ma let dict: NSDictionary = parcelDict
non funziona
let dict: NSDictionary = parcelDict as NSDictionary
var data = NSJSONSerialization.dataWithJSONObject(parcelDict as NSMutableDictionary, options:0, error: errorPtr) as NSData
Tutti questi esempi non funzionano. Essi producono i seguenti errori:
Qual è il modo corretto di farlo?
Aggiornamento:
codice che funziona
var parcelDict = ["trackingNumber" : parcel.number!,
"dstCountry" : parcel.countryCode!];
if (parcel.postalService != nil) {
parcelDict["postalService"] = parcel.postalService;
}
var jsonError : NSError?
let dict = parcelDict as NSDictionary
var data = NSJSONSerialization.dataWithJSONObject(dict, options:nil, error: &jsonError)
return NSString(data: data!, encoding: NSUTF8StringEncoding)!
Il tuo dizionario non è [String: String] its a [String: String?] – Arbitur
Non c'è davvero alcun bisogno di avere un valore opzionale in un dizionario, a meno che tu non voglia avere ancora la chiave che non si riferisce a nulla . – Arbitur
Il mio suggerimento è basta cambiare il valore in String invece che in String? – Arbitur