Swift 3:如何返回多种数据类型

时间:2017-01-31 09:09:30

标签: ios swift swift3

很抱歉,如果这是一个noob问题,但我对swift很新。

我有一个从网页获取数据并将其作为字符串保存到变量中的函数。在同一个函数中我还需要返回一个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

}

谁能告诉我我做错了什么?感谢。

3 个答案:

答案 0 :(得分:4)

你的函数必须返回一个元组,例如:

return (flag, pageData)

答案 1 :(得分: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)
}

答案 2 :(得分: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)
}