【问题标题】:Swift: Fetch JSON data and update locallySwift:获取 JSON 数据并在本地更新
【发布时间】:2015-10-30 11:23:59
【问题描述】:

在我的项目中,我需要从网络上获取 JSON 数据。同时,我会将其转换为String 并将其存储在我的Core Data 中。

假设我从网络上获取这个 JSON 数据。

我只需要帮助就可以从 JSON 中获取数据并转换为 String Array。对不起,我对 Swift2 很陌生,直到这里我才知道如何编码。

var url: NSURL = NSURL(string: jsonUrl)!
var request: NSURLRequest = NSURLRequest(URL: url)
let queue:NSOperationQueue = NSOperationQueue()

【问题讨论】:

    标签: json swift swift2 nsurlsession nsjsonserialization


    【解决方案1】:

    给你,在我的机器上用本地网络服务测试

    let session = NSURLSession.sharedSession()
            let request = NSMutableURLRequest(URL: NSURL(string: "http://localhost:8080/iOSServer/ios/helloworld/getJSONArray")!)
            request.HTTPMethod = "GET" // change it to post if you want
    
            let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
    
                if let error = error {
                    print(error)
                }
                if let data = data{
                    do{
                        let resultJSON = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions())
                        let resultArray = resultJSON as? NSArray
                        for jsonObjectString in resultArray!{
                            let platform = jsonObjectString["platform"]!
                            let favorite = jsonObjectString["favorite"]!
                            let language = jsonObjectString["language"]!
                            print("platform = \(platform!)")
                            print("favorite = \(favorite!)")
                            print("language = \(language!)")
                        }
    
                    }catch _{
                        print("Received not-well-formatted JSON")
                    }
    
                }
                if let response = response {
                    let httpResponse = response as! NSHTTPURLResponse
                    print("response code = \(httpResponse.statusCode)")
                }
    
    
    
            })
            task.resume()
        }
    

    如您所见,在for 循环中,我正在打印来自服务器的值,您可以对它们做任何您想做的事情。

    我认为 JSON 键是:platformfavoritelanguage 你可以改变它们。 (请注意大小写)

    【讨论】:

    • 嗨,虽然我仍在处理同一个项目,但我注意到在调试过程中它在let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in 之后退出程序,它执行task.resume() 而不通过If 语句。由于这个问题,我无法提取并显示在我的 UITableView 上。
    • @JoeLeong 请创建一个新问题,描述新问题并将链接发送给我
    • 您好,感谢您的回复。提供的链接。 [链接]stackoverflow.com/questions/33666365/…
    • @WilliamKinann 我使用你的确切方法来获取 JSON 数据并存储在我的字符串中。我还提供了我的项目文件的下载链接。
    【解决方案2】:
    let task = NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: "url")!, completionHandler: { (data, response, error) -> Void in
        if error != nil {
            //do something with error
            return
        }
    
        do {
            if let data = data, jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments) as? [[String:AnyObject]] {
    
                for object in jsonData {
                    var object = Object()
                    if let platform = object["platform"] as? String {
                        object.platform = platform
                    }
                }
            }
        } catch {
            //Handle error
        }
    })
    task.resume()
    

    【讨论】:

      猜你喜欢
      • 2020-07-23
      • 1970-01-01
      • 2013-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多