Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;致命错误:在展开可选值“时意外发现nil”;解析JSON时_Json_Swift - Fatal编程技术网

&引用;致命错误:在展开可选值“时意外发现nil”;解析JSON时

&引用;致命错误:在展开可选值“时意外发现nil”;解析JSON时,json,swift,Json,Swift,注意:我想知道投票失败的原因。我认为这是一个格式正确的问题。我真的不在乎投票,因为我来这里只是为了学习,但不管是谁在没有解释的情况下投了反对票,都会让很多人不敢去问和学习。 我编写了下面的代码,用于从Web服务获取json,当我在新的“单视图项目”中运行json时,它可以正常工作,但它给出了**致命错误:当我在项目中添加可选值**时,在展开可选值时意外发现nil。您还可以从下面的屏幕截图中看到哪里出了问题 代码: 如何修复此问题?我认为您没有从服务器获取响应数据,这就是为什么会出现此错误 您需

注意:我想知道投票失败的原因。我认为这是一个格式正确的问题。我真的不在乎投票,因为我来这里只是为了学习,但不管是谁在没有解释的情况下投了反对票,都会让很多人不敢去问和学习。

我编写了下面的代码,用于从Web服务获取json,当我在新的“单视图项目”中运行json时,它可以正常工作,但它给出了
**致命错误:当我在项目中添加可选值**
时,在展开可选值时意外发现nil。您还可以从下面的屏幕截图中看到哪里出了问题

代码:


如何修复此问题?

我认为您没有从服务器获取响应数据,这就是为什么会出现此错误

您需要进行url编码。

你的代码

var serviceParam: AnyObject = NSUserDefaults.standardUserDefaults().objectForKey("key4news")!
var apiURL = "http://myIP/myWebService?search_text=\(serviceParam)"
需要像

var serviceParam: AnyObject = NSUserDefaults.standardUserDefaults().objectForKey("key4news")!        
serviceParam = serviceParam.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())!
var apiURL = "http://myIP/myWebService?search_text=\(serviceParam)"

对于json,您必须确定日期格式。它可以是字典或数组。在您的例子中,可能json内容是数组格式的,但您强制强制转换为字典?格式化,使其返回nil。
var serviceParam: AnyObject = NSUserDefaults.standardUserDefaults().objectForKey("key4news")!
var apiURL = "http://myIP/myWebService?search_text=\(serviceParam)"
var serviceParam: AnyObject = NSUserDefaults.standardUserDefaults().objectForKey("key4news")!        
serviceParam = serviceParam.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())!
var apiURL = "http://myIP/myWebService?search_text=\(serviceParam)"