无法在Swift 3

时间:2017-06-07 00:38:55

标签: ios swift3

我曾经使用Objective-C开发iOS应用程序。现在我最近迁移到Swift。在我的应用程序中,我有一个按钮,可以使用预先填充的主题和正文打开MS Outlook App。

我在Objective-C中做了一个类似的应用程序,并使用下面的代码为URL编码我的字符串。

NSString *emailSubject = @"Test Subject";
NSString *encodedSubject = [emailSubject stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];

现在我无法在Swift 3中执行相同操作。下面是我尝试过的代码。

var subjectText: String = "Test Subject"

var encodedSubject = subjectText.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)

var stringURL: String = "ms-outlook://compose?subject=" + subjectText + "&body=TestingEmailNow"
// Convert the string to a URL.
var url = URL(string: stringURL)

// Open the app that responds to the URL scheme (should be Outlook).
UIApplication.shared.openURL(url!)

我得到的错误如下。

  

致命错误:在展开Optional值时意外发现nil   2017-06-07 04:29:35.158030 + 0400我的应用程序[1286:405793]致命错误:在展开可选值时意外发现nil

我知道这个错误是由于我的主题中的空间而来的。我可以这么说,因为如果我删除空间,我甚至不必编码它。它直接工作。我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

你犯了一个简单的错误。

检查你的行

path

您使用 subjectText 而不是 encodedSubject

完整代码:

source

答案 1 :(得分:1)

使用的变量是问题,但我也建议使用URLComponents而不是将URL构建为字符串。

with