【发布时间】:2016-12-21 13:07:51
【问题描述】:
在 xcode 7.3 我更新到 xcode 8.2 和 swift 3 之前,我一直可以正常访问我的网络服务,现在我的应用程序崩溃了,这是我的代码
func jsonParsingFromURL () throws {
let WSLink = "http://XXXXX.co/itXXXXMS/webservice.asmx/GXXXXXX"
let url = URL(string: WSLink)
let bodyData = "lastlogindate=\(todayDate)&CompanyId=\(compID)" //problem is here
let request:NSMutableURLRequest = NSMutableURLRequest(url:url!)
request.httpMethod = "POST"
request.httpBody = bodyData.data(using: String.Encoding.utf8);
NSURLConnection.sendAsynchronousRequest(request as URLRequest, queue: OperationQueue.main) {(response, data, error) in
guard let _ = data else { return }
self.startParsing(data!)
}
}
func startParsing(_ data :Data) {
//Am getting error here in this line
let dict: NSDictionary!=(try! JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers)) as! NSDictionary
arrDict.removeAllObjects()
for i in 0 ..< (dict.value(forKey: "results") as! NSArray).count {
arrDict.add((dict.value(forKey: "results") as! NSArray) .object(at: i))
}
}
json 文本不是以数组或对象开头,并且选项允许 片段未设置
其实我找到了错误的原因,但不知道如何解决它。
当我写为时,让 bodyData = "lastlogindate=26/11/2016&CompanyId=3" //它正在工作。
当我将参数包装在来自先前视图控制器的动态变量中时,例如
让 date = "26/11/2016",让 id = "3" 和
let bodyData = "lastlogindate=(date)&CompanyId=(id)" 然后出现错误。
所以基本上我的问题是如何在 swift 3 中将动态变量包装到 request.httpBody 中?
【问题讨论】:
-
但在 swift 2.2 之前它工作正常
-
昨天我更新了 xcode,今天它给出了这个错误,swift 3 有什么改变吗?
-
那你有什么建议?
-
我在浏览器中测试了它的工作原理
-
尝试将序列化中的
options设置为.allowFragments。
标签: ios json web-services rest swift3