2016-07-11 5 views
-3

У меня возникли проблемы, чтобы получить строку из NSURLSession. Код ниже подключается к моему серверу, и он должен возвращать строку Base64.Base64 - это NSString, а не строка

Все, что я получаю, это NSString. В конце этого сообщения приведен пример вывода. Почему он добавляет «необязательный» перед строкой? И как мне сохранить эту строку в переменной? Мне нужна строка для декодирования Base64.

let url = NSURL(string: "url here") 

    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in 
     print(NSString(data: data!, encoding: NSUTF8StringEncoding)) 
    } 

    task.resume() 

Выход:

Optional(base64String...) 
+4

Как Swift программист вы должны узнать о OPTIONALS. Прочтите руководство: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID330 – Moritz

ответ

0

Инициализатором init?(data:encoding:) возвращает дополнительный NSString, потому что это (очень) возможно для приведенных данных в не представляет собой действительную строку, закодированную с помощью прилагаемого типа кодирования. В этом случае, вместо того, чтобы сбрасывать, бросать ошибки или возвращать строки, такие как "error", он возвращает nil, с которым требует компилятор Swift.

Вы можете узнать больше о OPTIONALS Свифта в The Swift Language Guide (Swift 2.2) - The Basics - Optionals

+0

Спасибо за ваш ответ. Я прочитал вашу ссылку. Если бы я понял, что все, что мне нужно было сделать, это изменить NSString (данные, кодирование)! <- но у меня все еще есть проблема, что я не могу сохранить ее в переменной. – qwdtimes2

+0

Извините, что я пришлю свой комментарий быстро. Вы читали? Я буду отмечать его как принятый после: – qwdtimes2

+1

Я рекомендую не использовать оператор разворота силы ('!'). Это, безусловно, самая распространенная причина сбоев в программах Swift. Что вы подразумеваете под «все еще проблема, которую я не могу сохранить в переменной»? – Alexander

Смежные вопросы