[英]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.