2014-11-26 10 views
1

Я пытаюсь извлечь некоторые данные из объекта JSON, который я извлекаю из Reddit, и у меня возникают проблемы при использовании библиотеки SwiftyJSON (вы можете найти это здесь: https://github.com/SwiftyJSON/SwiftyJSON).Проблемы с SwiftyJSON

Я обращаюсь к API Reddit по следующему URL-адресу: «http://www.reddit.com/r/aww/hot.json« Я пытаюсь извлечь несколько пар значений из ответа json, начиная с автора списка.

Мой код ниже:

import UIKit 

class ViewController: UIViewController, NSURLConnectionDelegate { 

    var data = NSMutableData() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated) 
     self.connectReddit() 
    } 

    func connectReddit() { 
     let urlPath: String = "http://www.reddit.com/r/aww/hot.json" 
     var url = NSURL(string: urlPath)! 
     var request = NSURLRequest(URL: url) 
     var connection = NSURLConnection(request: request, delegate: self, startImmediately: false)! 
     connection.start() 
    } 

    func connection(connection: NSURLConnection!, didReceiveData data: NSData!){ 
     self.data.appendData(data) 
    } 

    func connectionDidFinishLoading(connection: NSURLConnection!) { 
     var err: NSError? 
     // throwing an error on the line below (can't figure out where the error message is) 
     let jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary 
     println(jsonResult) 

     let json = JSON(data: data) 
     let authorName = json["data"]["children"]["author"].stringValue 
     println(authorName) 
    } 



} 

Вы можете увидеть код, вызывающий класс SwifyJSON, пытаясь разобрать его для данных является следующее, я получаю ноль в ответ, когда я ясно видеть данные там.

let json = JSON(data: data) 
     let authorName = json["data"]["children"]["author"].stringValue 
     println(authorName) 

Я не уверен, что я делаю неправильно здесь.

Спасибо за помощь!

+0

Если вы посмотрите на JSON, возвращаемый этот URL вы должны заметить, что JSON [ "данные"] [ "дети"] будет массивом объектов , а не объект, содержащий «автора». –

ответ

2

вы должны попробовать это;

let authorName = json["data"]["children"][0]["data"]["author"].stringValue 
0

Для Swift 3.0.1:

let authorName = json["data"]["children"][0]["data"]["author"].string 

 Смежные вопросы

  • Нет связанных вопросов^_^