2016-06-15 3 views
0

У меня есть быстрое приложение, которое вызывает api и возвращает обратно JSON.Как изменить NSData на NSDictionary или 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 
    } 

И печатает:

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

Я хочу, чтобы просто распечатать данные некоторые машиночитаемой форме путем преобразования в словарь.

EDIT 1

функция

Мой прибудете() определяется как таковую:

func get(path: String) -> Request { 

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

EDIT 2

Я использую

import UIKit 
import Alamofire 
import SwiftyJSON 

EDIT 3

Я пытался следовать примеру здесь: How to parse JSON in Swift using NSURLSession

Но получаю ошибку "неразрешенного идентификатора" JSONSerialization"

EDIT 4/вероятный ответ

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

выведенное:

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

Я считаю, что это json, и я правильно печатаю читаемые данные, поэтому считаю, что это ответ. Я привели к этому комментарию предлагая использовать swiftJSON

+0

использования SwiftyJSON - https://github.com/ SwiftyJSON/SwiftyJSON –

+0

Как определяется 'Request'? –

+1

Обратите внимание, что ваш ответ «{» status »:« 404 »,« error »:« Not Found »}'. Не используйте 'NSKeyedUnarchiver.unarchiveObjectWithData', используйте' NSJSONSerialization.JSONObjectWithData (data: dataExample options: 0) ' – Larme

ответ

0

очень стандартный способ для преобразования в формат JSON из NSData, не стесняйтесь задать вопрос

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. 
       } 
} 
Смежные вопросы