2016-09-04 31 views
0

私はjsonデータを取得してそれを返すことになっている関数を持っています。これは、以下の機能です:関数は、void関数の予期しない非void戻り値を返します

func httpjson(){ 
    let requestURL: NSURL = NSURL(string: "http://www.learnswiftonline.com/Samples/subway.json")! 
    let urlRequest: NSMutableURLRequest = NSMutableURLRequest(URL: requestURL) 
    let session = NSURLSession.sharedSession() 
    let task = session.dataTaskWithRequest(urlRequest) { (data, response, error) -> Void in 
     let httpResponse = response as! NSHTTPURLResponse 
     let statusCode = httpResponse.statusCode 
     if (statusCode == 200) { 
      print("All OK!") 
      do{ 
       let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments) 
       return json 
      }catch { 
       print("Error with Json: \(error)") 
      } 
     } 
    } 
    task.resume() 
} 

コードは、この問題について少し読んだ後にエラーUnexpected non-void return value in void function

を返し、私はこれがfunc httpjson()-> String{からfunc httpjson(){を変更することで固定することができる読んで、それはまだ同じエラーを返します。 。

+1

[this](http://stackoverflow.com/q/32121108/6541007)によく似ています。 – OOPer

答えて

0

httpjsonメソッドではなく、(data, response, error) -> Voidと定義されているクロージャで問題が発生しているようです。

データタスクが非同期であるため、httpjsonはJSON解析が完了するまでに既に返されています。 がまだ返っていないので、何も返さないと定義する必要はありません。

json(通知、コールバック、補完ブロックなど)を使用して、残りのアプリケーションにいつでも使用できるようにする必要があります。

関連する問題