2017-01-31 6 views
-1

申し訳ありませんが、これはノーブの質問ですが、私はかなり迅速です。スイフト3:複数のデータ型を返す方法

私はウェブページからデータを取得し、それを文字列として変数に保存する関数を持っています。同じ関数でもintを返す必要がありますが、それらを返す問題がありますので、関数の外で使うことができます。ガードからのvoid return文にも問題があります。

func PageData(flag: Int, pageData: String) -> (Int?, String?) 
{ 

    let URLString = url.text 
    guard let myURL = URL(string: URLString!) else { 
     print("invalid url") 
     return 
    } 

    do { 
     let pageData = try String(contentsOf: myURL, encoding: .ascii) 
    } catch let error { 
     print("Error: \(error)") 
    } 

    let flag = 1 

    return flag 
    return pageData 

} 

誰でも私が間違っていることを教えてもらえますか?ありがとう。

+1

は単純に、このリターン(フラグ、InboundのPageDate)のように書く –

+0

には誤差が含まれWICHが、私は場所を知る必要があります'url.text'が表示されます。 – Alex

答えて

4

あなたの機能は例えば、タプルを返す必要があります。

return (flag, pageData) 
1

あなたが複数の値を返すことができますが、この

func PageData(flag: Int, pageData: String) -> (Int?, String?) 
{ 

    let URLString = url.text 
    guard let myURL = URL(string: URLString!) else { 
     print("invalid url") 
     return (nil, nil) 
    } 

    do { 
     let pageData = try String(contentsOf: myURL, encoding: .ascii) 
    } catch let error { 
     print("Error: \(error)") 
    } 

    let flag = 1 

    return (flag, pageData) 
} 
+0

「復帰」を忘れてしまった。 – user28434

+0

ありがとう、それは働いた。 – adevh

1

のような機能を形成するあなたは、FUNC自体はそうあなたがすべき返すオブジェクトを返す必要があります(Int, String)形式を返してください。

これはあなたのコードでそれを使用する方法である:他の人があります言及した可能性の横に

func PageData(flag: Int, pageData: String) -> (Int?, String?) { 

    let URLString = url.text 
    guard let myURL = URL(string: URLString!) else { 
     print("invalid url") 
     return (nil, nil) 
    } 

    do { 
     let pageData = try String(contentsOf: myURL, encoding: .ascii) 
    } catch let error { 
     print("Error: \(error)") 
    } 

    let flag = 1 

    return (flag, pageData) 
} 
関連する問題