0
私はSwiftを初めてご利用になり、質問があります。私はタスクを実行するコードのために次のブロックを持っています。ただし、このタスクブロックは、Xcode 8.2.1から実行すると実行されません。何が間違っているのですか?Swift 3.0:タスクブロックが実行されません
// Execute HTTP Request
let task = URLSession.shared.dataTask(with: request as URLRequest) {
(data, response, error) in
// Check for error
if error != nil
{
print("error=\(error)")
return
}
// Print out response string
let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print("responseString = \(responseString)")
// Convert server json response to NSDictionary
do {
if let convertedJsonIntoDict = try JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary {
// Print out dictionary
print(convertedJsonIntoDict)
// Get value by key
let sessionId = convertedJsonIntoDict["sessionId"] as? String
print(sessionId!)
}
} catch let error as NSError {
print(error.localizedDescription)
}
}
task.resume()
completionHandlerは必須ですか?私はmain.swiftファイルの中でこれを実行しています。
タスクが終了する前にプログラムが終了している可能性があります。コードのコンテキストをさらに提供する。 –
あなたの質問とはまったく無関係で、 'NSString'、' NSURLRequest'、 'NSError'参照を省くとコードが単純化されます。代わりに 'String'、' URLRequest'と 'Error'を使います。そして、キャスティングは必要なく、 'encoding'は簡単です。 – Rob
@Rob thats right、実行後にコンソールに印刷エラーや応答文字列が表示されません。 – gooner