Swift通过POST PHP服务器发送JSON数据服务器
当我使用Swift通过POST JSON向服务器提供数据时,我得到了致命错误: 在展开可选值时意外发现nil 我不确定这是我传递JSON库字典的方式,还是发送到服务器时出现问题,因为我无法查看服务器PHP代码 我不知道这是怎么回事Swift通过POST PHP服务器发送JSON数据服务器,php,json,swift,post,Php,Json,Swift,Post,当我使用Swift通过POST JSON向服务器提供数据时,我得到了致命错误: 在展开可选值时意外发现nil 我不确定这是我传递JSON库字典的方式,还是发送到服务器时出现问题,因为我无法查看服务器PHP代码 我不知道这是怎么回事 NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error: &err) as! NSArray 工作 我使用 func parseExportDB() ->
NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error: &err) as! NSArray
工作
我使用
func parseExportDB() -> [AnyObject]{
var exportDict: [AnyObject] = []
for tuple in export {
var dictObj = [
"PhoneID": "petrjanata",
"LocLabel": tuple[crosslocation],
"Latitude": "123",
"Longitude": "-123",
"time" : tuple[time],
"heading" : tuple[heading]
]
exportDict.append(dictObj)
println(dictObj)
}
return exportDict
}
我获取exportDict JSON数组对象并传递到此函数:
func sendJsonToServer(ExportList: AnyObject){
var request = NSMutableURLRequest(URL: NSURL(string: "http://atonal.ucdavis.edu/geomus/submit_data.php")!)
var session = NSURLSession.sharedSession()
request.HTTPMethod = "POST"
var err: NSError?
if let serializedData = NSJSONSerialization.dataWithJSONObject(ExportList, options: nil, error: &err){
request.HTTPBody = serializedData
println(request.HTTPBody)
}
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
println("Response: \(response)")
var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Body: \(strData)")
var err: NSError?
let jsonString = self.JSONStringify(ExportList)
println(jsonString)
var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error: &err) as! NSArray
// var json = noWrappedJson!
// Did the JSONObjectWithData constructor return an error? If so, log the error to the console
if(err != nil) {
println(err!.localizedDescription)
let jsonStr = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Error could not parse JSON: '\(jsonStr)'")
}
else {
// The JSONObjectWithData constructor didn't return an error. But, we should still
// check and make sure that json has a value using optional binding.
for singleCode in json {
if let parseJSON = singleCode as? NSDictionary {
// Okay, the parsedJSON is here, let's get the value for 'success' out of it
var success = parseJSON["code"] as? String
println("Succes: \(success)")
}
else {
// Woa, okay the json object was nil, something went worng. Maybe the server isn't running?
let jsonStr = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Error could not parse JSON: \(jsonStr)")
}
}
}
})
task.resume()
}
代码输入致命错误:
在展开可选值时意外发现nil
错误地
我不知道如何修复,或者JSON格式或服务器到底出了什么问题?plz dnt uz txtspk、itz rly unrdble和itz hrdly mch effrt 2 jst类型prply。kthxbai!很抱歉,我来自中国,英语不好。我不是想批评你的英语,泰迪,我们对不完美的英语没意见。不过,thx和类似的功能最好保留在Facebook上:-。作为未来的一般经验法则,在讨论StackOverflow有关发送和接收数据的问题之前,最好验证问题是否确实存在于你的iOS应用程序中,而不是API本身——这可以通过Chrome应用程序来完成。你正在打印strData。也许你能给我们看看它是什么样子。您的JSONObjectWithData正在尝试将结果强制转换为数组。但它真的是一个数组吗?或者是一本字典?或者是一些错误信息?您告诉我们JSONObjectWithData失败,但没有告诉我们输入是什么样子的。还有,而不是作为!恩萨雷,试试看?NSArray,然后查看NSError对象是否有任何关于JSON解析本身失败的原因的信息。
var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error: &err) as! NSArray