2016-06-15 8 views
0

Ich habe eine schnelle App, die API aufruft und ein JSON zurückerhält.So ändern Sie ein NSData in ein NSDictionary oder JSON

self.get(url).responseJSON { (response) -> Void in 
     self.notify(FetchCompletion, response: response.response, result: response.result) 
     print("response: ") 
     print(response.response) 
     print("data: ") 
     let dataExample = response.data 
     print(dataExample) 
     let dictionary:NSDictionary? = NSKeyedUnarchiver.unarchiveObjectWithData(dataExample!)! as? NSDictionary 
    } 

Und es ausdruckt:

... 
data: 
Optional(<7b227374 61747573 223a2234 3034222c 22657272 6f72223a 224e6f74 20466f75 6e64227d>) 
fatal error: unexpectedly found nil while unwrapping an Optional value 

Ich mag nur aus den Daten drucken ist etwas lesbare Form von in ein Wörterbuch zu konvertieren.

EDIT 1

Mein get() Funktion wird als solche definiert:

func get(path: String) -> Request { 

    return self.get(path, data: NSDictionary()) 
} 

EDIT 2

Ich bin mit

import UIKit 
import Alamofire 
import SwiftyJSON 

EDIT 3

ich versucht, hier dem Beispiel zu folgen: How to parse JSON in Swift using NSURLSession

Aber der Fehler

EDIT 4/wahrscheinliche Antwort

var newdata = JSON(data: dataExample!) 
print(newdata) 

"ungelöste Kennung 'jsonSerialization'" erhalten ausgegeben:

{ 
    "status" : "404", 
    "error" : "Not Found" 
} 

Ich glaube, dass dies ein JSON ist und ich die lesbaren Daten richtig drucke, also glaube ich, dass dies die Antwort ist. Ich wurde dies durch den Kommentar führte was darauf hindeutet, swiftJSON zu verwenden

+0

Verwendung SwiftyJSON fragen - https://github.com/ SwiftyJSON/SwiftyJSON –

+0

Wie ist 'Anfrage' definiert? –

+1

Beachten Sie, dass Ihre Antwort "{" status ":" 404 "," error ":" Not Found "}' lautet. Verwenden Sie nicht 'NSKeyedUnarchiver.unarchiveObjectWithData', verwenden Sie' NSJSONSerialization.JSONObjectWithData (data: dataExample Optionen: 0) ' – Larme

Antwort

0

Eine sehr übliche Weise zu JSON von NSData zu konvertieren, können Sie eine Frage

self.get(url).responseJSON { (response) -> Void in 
      self.notify(FetchCompletion, response: response.response, result: response.result) 
      print("response: ") 
      print(response.response) 
      print("data: ") 
      let dataExample = response.data 
      print(dataExample) 
    do { 
      let dictionary = try NSJSONSerialization.JSONObjectWithData(dataExample!, options: NSJSONReadingOptions()) as! NSDictionary 


     } 
    catch { 
     // catch error. 
       } 
}