2015-02-28 10 views
7

Ho aggiunto un JSON-file per il file system in cui i dati è strutturata in questo modo:Come recuperare i dati da file con SwiftyJSON

{ "DDD": "3D Systems Corporation", "MMM ":" 3M Company "," WBAI ": " 500.com Limited "," WUBA ":" 58.com Inc. "," AHC ":" AH Belo Corporation "," ATEN ":" Reti A10, Inc. "," AAC ":" AAC Holdings, Inc. "," AIR ":" AAR Corp. " }

mio file-nome è stockDict.json e sto cercando di recuperare i dati da esso utilizzando questo codice:

let jsonFilePath:NSString = NSBundle.mainBundle().pathForResource("stockDict", ofType: "json")! 
     let jsonData:NSData = NSData.dataWithContentsOfMappedFile(jsonFilePath as String) as! NSData 
     let error:NSError? 
     let json = JSON(jsonData) 

     println(json[0][0].string) 

Ma tutto quello che ottiene quando la stampa è nil. cosa c'è che non va nel mio codice?

Qualsiasi suggerimento sarebbe apprezzato.

+0

Ho trovato questa risposta per essere molto utile http://stackoverflow.com/a/28644494/535339 – crobicha

risposta

10

Avete provato con

let json = JSON(data: jsonData) // Note: data: parameter name 
println(json["DDD"].string) 
+0

Ora devo, e ancora stampe "nullo" . – joseph

+0

Ah, mancano i dati: nome parametro, modificato la risposta –

+0

Grazie mille! :) – joseph

5

non ho il rappresentante di commentare, ma questa risposta è deprecato come di iOS 8, in particolare la parte che segue.

.dataWithContentsOfMappedFile 

XCode mi sta dicendo.

'dataWithContentsOfMappedFile' was deprecated in iOS 8.0: Use +dataWithContentsOfURL:options:error: and NSDataReadingMappedIfSafe or NSDataReadingMappedAlways instead. 

------ EDIT --------

Ecco il codice aggiornato che sto usando. Compila e funziona con un obiettivo di iOS 9.1.

let path = NSBundle.mainBundle().pathForResource("fileName", ofType: "json") 
let jsonData = NSData(contentsOfFile:path!) 
let json = JSON(data: jsonData!) 
1

Swift 3 Versione:

let path = Bundle.main.path(forResource: "JSON", ofType: "json")! 
let jsonString = try? String(contentsOfFile: path, encoding: String.Encoding.utf8) 
let json = JSON(parseJSON: jsonString!) 
+0

Al giorno d'oggi si consiglia di utilizzare Bundle.main.url invece di Bundle.main.path. – Moritz

+0

Grazie a @Moritz! –

Problemi correlati