したがって、View Controllerに次のコードがあり、完全に機能します。私はjsonリクエストを行い、サーバーコールが行われ、応答は問題ありません。私の関数はボタンのクリックで呼び出されます:
@IBAction func buttonClick(sender: AnyObject) {
var postsEndpoint = "http://test.com/test"
let test = ["Blah":"test"]
request(.POST, postsEndpoint, parameters: test as! [String : AnyObject] , encoding: .JSON)
.responseJSON { (request, response, data, error) in
if let anError = error
{
// got an error in getting the data, need to handle it
println("error calling POST on /posts")
println(error)
}
else if let data: AnyObject = data
{
let post = JSON(data)
// now we have the results, let's just print them though a tableview would definitely be better UI:
println("The post is: " + post.description)
}
}
}
そこで、すべてのサービスを呼び出すために使用できるクラスを作成したいと思います。したがって、このクラスで関数を作成し、ビュー コントローラーから let invoke = WebServiceCall() let jsonrequest = invoke.InvokeService() を使用して呼び出す関数を作成しました。
だから私のクラスと関数は
class WebServiceCall{
var post:JSON = nil
func InvokeService(type : String) ->JSON{
var postsEndpoint = "http://test.com/test"
let test = ["Blah":"test"]
request(.POST, postsEndpoint, parameters: test as! [String : AnyObject] , encoding: .JSON)
.responseJSON { (request, response, data, error) in
if let anError = error
{
// got an error in getting the data, need to handle it
println("error calling POST on /posts")
println(error)
}
else if let data: AnyObject = data
{
self.post = JSON(data)
// now we have the results, let's just print them though a tableview would definitely be better UI:
println("The post is: " + post.description)
}
}
return self.post
}
私の問題は、関数が呼び出されることだと思いますが、データが返されないという応答を待つ完了ハンドラーがないためです。完了ハンドラーをグーグルで検索しましたが、混乱しています。どんな助けでも素晴らしいでしょうthx