2017-01-31 3 views
-1

Извините, если это вопрос о нобе, но я довольно новичок в быстром.Swift 3: Как вернуть несколько типов данных

У меня есть функция, которая получает данные с веб-страницы и сохраняет ее в переменной как строку. В той же функции мне также нужно вернуть int, но у меня возникают проблемы с их возвратом, поэтому я могу использовать их вне функции. Существует также проблема с оператором return void от охранника.

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

Просто напишите, как это возвращение (флаг, pageData) –

+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

Вы забыли о 'return' в карауле. – 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) 
}