我正在访问我的webservices,直到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 =&#34; lastlogindate = 26/11 / 2016&amp; CompanyId = 3&#34; //它正在运作。
当我将参数包装在来自之前的viewController的动态变量中时,如
让date =&#34; 26/11/2016&#34;,让id =&#34; 3&#34;和
让bodyData =&#34; lastlogindate =(date)&amp; CompanyId =(id)&#34;然后我得到错误。
基本上我的问题是如何在swift 3中将动态变量包装到request.httpBody?
答案 0 :(得分:0)
在将参数传递给bodyData
时,我的问题出在这一行:
let bodyData = "lastlogindate=\(todayDate)&CompanyId=\(compID)"
//example lastlogindate = "12/24/2016" and CompanyId = 134
当我print(bodyData)
时,我将输出作为
&#34; lastlogindate = <强>可选的强>(2016年12月24日)及CompanyId = <强>可选的强>(134)&#34;
为什么optional
被添加到Swift 3中,我不知道。
在Swift 2.2中,它没有添加optional
。
所以,我做的是
let bodyData = "lastlogindate=" + todayDate + "&CompanyId=" + compID
现在,当我print(bodyData)
时,它会给我正确的输出
lastlogindate=12/24/2016&CompanyId=134.