我曾经使用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
我知道这个错误是由于我的主题中的空间而来的。我可以这么说,因为如果我删除空间,我甚至不必编码它。它直接工作。我在这里做错了什么?
答案 0 :(得分:2)
你犯了一个简单的错误。
检查你的行
path
您使用 subjectText 而不是 encodedSubject
完整代码:
source
答案 1 :(得分:1)
使用的变量是问题,但我也建议使用URLComponents而不是将URL构建为字符串。
with