Swift URL 编码返回 Optional("String")

Posted

技术标签:

【中文标题】Swift URL 编码返回 Optional("String")【英文标题】:Swift URL Encoding returns Optional("String") 【发布时间】:2014-09-30 13:38:49 【问题描述】:

我是 swift 新手(长期 php 和 C# 程序员),但我真的看不到任何与我遇到的这个问题相关的文档或问题。

所以,最重要的是,我想快速使用 NSURLSession 将 HTTP GET API 发送到远程服务器,但是当我对可编辑的 UITextView 进行编码时,我收到了包含在文字字符串“Optional( "")" 导致我的应用程序由于解析不良的 URL 而崩溃。

这是代码;

    var message = messageField.text
    var encodedMessage = message.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLHostAllowedCharacterSet())
    println(encodedMessage)

messageField.text 的值 = "您的留言。"但是,当我查看我的 println 输出时,我看到了;

可选的(“您的%20message%20here。”)

我可以做些什么来防止这种情况发生,或者更确切地说,我可以做些什么来利用这种方法,或者其他编码 UITextView 的方法?

【问题讨论】:

【参考方案1】:

stringByAddingPercentEncodingWithAllowedCharacters 返回String?。使用可选出价:

var message = messageField.text
var encodedMessage = message.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLHostAllowedCharacterSet())

if let encodedMessage = encodedMessage 
    println(encodedMessage)

【讨论】:

对不起;我假设错误的可选。 Kirsteins 找到了合适的。 请注意这里不需要var。这些值不会改变,因此首选let 每当您遇到此类问题时,只需 alt+单击变量名称和方法即可。您将看到推断出的类型以及方法返回的类型。

以上是关于Swift URL 编码返回 Optional("String")的主要内容,如果未能解决你的问题,请参考以下文章

URL编码参数中的布尔值在Swift3中使用Alamofire编码为0和1

关于optional的orElse和orElseGet、orElseThrow

Optional类的基本使用

UITextField - 无法打开 Optional.None

编码url swift withAllowedCharacters不工作 编码%20为%2520 (意味着编码%为%25)

swift swift_optional4.swift