获得离线模式的响应

时间:2017-01-08 17:17:24

标签: ios swift swift3

我在swift 3.0中点击了一个Web服务,我也在离线模式下获得响应。

以下是我工作的详细信息:

  1. 我需要拨打1个网络服务 - 让url =网址(字符串:" http://microblogging.wingnity.com/JSONParsingTutorial/jsonActors")

  2. 使用我在上面调用Web服务的URLSession.shared.dataTask(...)方法。

  3. 用try?声明' JSONSerialization.jsonObject(with:data!,options:JSONSerialization.ReadingOptions.mutableContainers)as AnyObject' 我解析了数据。

  4. 我跑了上面的代码,它让我回应了我的预期(在线模式)。

  5. 现在我关掉了我的wifi&再次运行上面的代码然后我再次获得与在线相同的数据。我把调试器放在completionHandler关闭成功部分,然后我到达那个断点。

  6. 我需要帮助。为什么我在离线模式下获得响应(我打印数组大小&它显示大小= 6)?

  7. 以下是代码。

  8. 我正在使用Swift 3.0开发Xcode 8.1

  9. { 最后让urlString =" http://microblogging.wingnity.com/JSONParsingTutorial/jsonActors"

    覆盖func viewDidLoad(){         super.viewDidLoad()

        self.downloadJsonWithURL()
    
        print("Inside viewDidLoad")
    
        // Do any additional setup after loading the view, typically from a nib.
    }
    
    
    func downloadJsonWithURL() {
    
        let url = URL(string: urlString)
    
        let task = URLSession.shared.dataTask(with: url!, completionHandler: {(data, response, error) -> Void in
    
    
            if error != nil
            {
                print("Error Found!!!!")
                return
            }
    
            else
            {
                guard let jsonObj = try? JSONSerialization.jsonObject(with: data!, options:JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
    
                    else
                {
                    // if 'let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary' fails(i.e falls) then this block will execute.
                    return
                }
    
    
                if let actorArray = jsonObj.value(forKey: "actors") as? NSArray {
                    for actor in actorArray{
                        print("Actor Array = \(actorArray.count)")
                        if let actorDict = actor as? NSDictionary {
    
                            if let name = actorDict.value(forKey: "name") {
                                self.nameArray.append(name as! String)
                            }
    
                            if let name = actorDict.value(forKey: "dob") {
                                self.dobArray.append(name as! String)
                            }
    
                            if let name = actorDict.value(forKey: "image") {
                                self.imgURLArray.append(name as! String)
                                let data = NSData(contentsOf: URL(string: name as! String)!)
                                self.imgArray.append(UIImage(data: data as! Data)!)
                            }
    
                        }
                    }
    
    
                    OperationQueue.main.addOperation({
                        self.tableView.delegate = self as? UITableViewDelegate
                        self.tableView.dataSource = self
                        self.tableView.reloadData()
    
                    })
                }
    
            }
        })
    
    
         task.resume()
    }
    

    }

1 个答案:

答案 0 :(得分:1)

在代码中添加以下代码。

    let urlConfig = URLSessionConfiguration.default
    urlConfig.requestCachePolicy = .reloadIgnoringLocalCacheData
    urlConfig.urlCache = nil

    let session = URLSession(configuration: urlConfig)

    let task = session.dataTask(with: url!, completionHandler: {(data, response, error) -> Void in