微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift – URL和字符串插值

似乎URL初始化器(字符串:“”)在使用字符串插值时拒绝正确初始化.问题是,当我使用类似的东西时

let url = URL(string: "http://192.168.1.1")

它有效,但以下

let host = "192.168.1.1"
let url = URL(string: "http://\(host)")

不和url = nil.

在Playground中既可以工作,也可以不在代码中.我仔细检查了变量主机是否设置正确.

任何的想法?

解决方法

有类似的问题.

这在Swift 2中有效但在Swift 3中有所突破(我在两个应用程序之间反弹,类似于Facebook和Facebook Messenger):

var userId: Int!
var userType: String!

// userId and userType are set by some code somewhere else...

if let url = URL(string: "anotherappicreated://?userId=\(userId)&userType=\(userType)") {
    UIApplication.shared.openURL(url)   // Open our other app
}

在Swift 2中,隐式解包的选项(用!声明的变量)无需打开它们就可以工作.在Swift 3中,您似乎必须明确解包选项:

var userId: Int!
var userType: String!

// userId and userType are set by some code somewhere else...

if let userId = userId,// <-- HAD TO ADD THIS
    let userType = userType,// <-- AND THIS
    let url = URL(string: "anotherappicreated://?userId=\(userId)&userType=\(userType)") {
    UIApplication.shared.openURL(url)   // Open our other app
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐