下記の関数は、バックグラウンド処理の関係で、動作順序が変わってしまい、関数の返り値が、予定したものにならない。

let task = NSURLSession.sharedSession().dataTaskWithRequest.....

この行以降が飛ばされ、関数が終了する。

改善方法を教えていただけないでしょうか?
Postを利用するため、この方法になっています。代替案でもいいです。

コードが古すぎていたので、HTTPアドレス以外、正しく動くように修正いたしました。

下記の場合、printの出力順が、"NG"->HTMLコードとなる。正しくはHTMLコード->"OK"となってほしい。

よろしく、お願いいたします。

import UIKit

class ViewController: UIViewController ,NSURLSessionDelegate, NSURLSessionDataDelegate {

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    print(Test())
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


func Test()-> String{
    let post = "name=Masuda&addr=Tokyo"
    let postdata = post.dataUsingEncoding(NSShiftJISStringEncoding)!
    let url = NSURL(string: "http://moonmile.net/ios9/post.php")
    let req = NSMutableURLRequest(URL: url!)
    req.HTTPMethod = "POST"
    req.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
    let length = postdata.length
    req.setValue("\(length)", forHTTPHeaderField: "Content-Length")
    req.HTTPBody = postdata
    var textBuf : String = "NG"
    let task = NSURLSession.sharedSession().dataTaskWithRequest(req, completionHandler: {
        ( data, res, err ) in
        if data != nil {

            let text = NSString(data: data!, encoding: NSShiftJISStringEncoding)

            print(NSString(data: data!, encoding: NSShiftJISStringEncoding))
            dispatch_async(dispatch_get_main_queue(), {
                textBuf = "OK"
            })
        }
    })

    task.resume()
    return textBuf
}
}