[英]Found nil when unwrapping non nil value
我正在尝试通过swift传递以下参数来获取get请求
var dict = [
"id_struttura" : 2,
"prenCheck" : [
"codice" : "14:30_15:20_1_3831_0",
"id_sport" : 6,
"ora_fine" : "20/02/2015 15:20:00",
"ora_inizio" : "20/02/2015 14:30:00",
"rec" : 0,
"soci" : [
[
"esterno" : 0,
"id" : "1980"
],
[
"esterno" : 0,
"id" : "51"
]
]
]
]
使用以下方法:
private func genericRequest(method: Methods, url: String, data: [String: AnyObject]?) -> AnyObject?{
var getRequest : NSURLRequest?
var postRequest : NSMutableURLRequest?
if method == Methods.GET{
var completeUrl = url
if(data != nil){
//println(data)
completeUrl += "?"
for (key, value) in data! {
completeUrl += "\(key)=\(value)&"
}
completeUrl = completeUrl.substringToIndex(completeUrl.endIndex.predecessor())
}
//println(completeUrl)
let url = NSURL(string: completeUrl)
getRequest = NSURLRequest(URL: url!)
}else if method == Methods.POST{
postRequest = NSMutableURLRequest(URL: NSURL(string: url)!)
var session = NSURLSession.sharedSession()
postRequest!.HTTPMethod = "POST"
var params : String = ""
for (key, value) in data! {
params += "\(key)=\(value)&"
}
params = params.substringToIndex(params.endIndex.predecessor())
var err: NSError?
postRequest!.HTTPBody = params.dataUsingEncoding(NSUTF8StringEncoding);
}
var response: NSURLResponse? = nil
var error: NSError? = nil
var request = getRequest != nil ? getRequest! : postRequest!
let reply = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)
//println((response as NSHTTPURLResponse).statusCode)
let results = NSString(data:reply!, encoding:NSUTF8StringEncoding)
var json: AnyObject? = convertDataToJSON(reply)
return json
}
将其称为genericRequest(Method.GET ,url:url, data: dict)
(因为Method只是一个枚举)它无法解包数据中for (key,value)in data!
数据变量for (key,value)in data!
在发出get请求时,它可以在发出请求时发出请求。 由于我必须只使用获取此任务的请求(我正在处理一个糟糕的休息界面),有人可以帮助我吗?
更新:我也试过if let data = data { ...
它在这一行崩溃说unexpectedly found nil while unwrapping an Optional value
为什么不像在GET方法中那样检查POST方法中的数据是否为nil。 我认为post方法是你试图解开nil的地方
if method == Methods.GET{
var completeUrl = url
// here you check if data is nil
if(data != nil){
//println(data)
completeUrl += "?"
for (key, value) in data! {
completeUrl += "\(key)=\(value)&"
}
completeUrl = completeUrl.substringToIndex(completeUrl.endIndex.predecessor())
}
//println(completeUrl)
let url = NSURL(string: completeUrl)
getRequest = NSURLRequest(URL: url!)
}else if method == Methods.POST{
postRequest = NSMutableURLRequest(URL: NSURL(string: url)!)
var session = NSURLSession.sharedSession()
postRequest!.HTTPMethod = "POST"
var params : String = ""
//check here as well
if data != nil{
for (key, value) in data! {
params += "\(key)=\(value)&"
}
params = params.substringToIndex(params.endIndex.predecessor())
}
var err: NSError?
postRequest!.HTTPBody = params.dataUsingEncoding(NSUTF8StringEncoding);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.