我在swift 3.0中点击了一个Web服务,我也在离线模式下获得响应。
以下是我工作的详细信息:
我需要拨打1个网络服务 - 让url =网址(字符串:" http://microblogging.wingnity.com/JSONParsingTutorial/jsonActors")
使用我在上面调用Web服务的URLSession.shared.dataTask(...)方法。
用try?声明' JSONSerialization.jsonObject(with:data!,options:JSONSerialization.ReadingOptions.mutableContainers)as AnyObject' 我解析了数据。
我跑了上面的代码,它让我回应了我的预期(在线模式)。
现在我关掉了我的wifi&再次运行上面的代码然后我再次获得与在线相同的数据。我把调试器放在completionHandler关闭成功部分,然后我到达那个断点。
我需要帮助。为什么我在离线模式下获得响应(我打印数组大小&它显示大小= 6)?
以下是代码。
我正在使用Swift 3.0开发Xcode 8.1
{ 最后让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()
}
}
答案 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