Swift 中的 Master Detail 应用程序 - 如何将字符串转换为 URL
Posted
技术标签:
【中文标题】Swift 中的 Master Detail 应用程序 - 如何将字符串转换为 URL【英文标题】:Master Detail app in Swift - how to convert string into URL 【发布时间】:2017-09-29 21:25:27 【问题描述】:我是新来的,所以请多多包涵。我有一个 Master-Detail 应用程序,在 DetailViewController.swift 文件中,这是 configureView 函数,它调用 web 视图来打开网页。
它在 let request = URLRequest(url:url) 行上抱怨,因为 url 变量被定义为字符串。我已经尝试了所有方法,但它不起作用。
顺便说一下,MasterViewController.MyVariables.urlString
是一个字符串数组。
func configureView()
// Update the user interface for the detail item.
if let detail: AnyObject = detailItem
if let myWebview = webView
let url = MasterViewController.MyVariables.urlString
let request = URLRequest(url: url)
myWebview.scalesPageToFit = true
myWebview.loadRequest(request)
【问题讨论】:
只需传递一个新网址URL(string: url)
无法转换“[String] 类型的值?”到预期的参数类型“URL”
让 request = URL(String: url) 给我错误 参数标签 '(String:)' 不匹配任何可用的重载
字符串不是字符串let request = URLRequest(url: URL(string: MasterViewController.MyVariables.urlString)!)
您好,感谢您的评论,但它仍然给我一个错误。
【参考方案1】:
您可以传递一个URL
对象或从您传递的字符串创建一个URL
对象。无论如何,您需要将您的字符串转换为URL
。
if let url = URL(string: MasterViewController.MyVariables.urlString)
// use url in here
更新: 用这个作为你的例子:
if let url = URL(string: MasterViewController.MyVariables.urlString)
// use url in here
let request = URLRequest(url: url)
更新 2:
你有你的Struct
,这是一个array of strings
。那么你需要这样做才能得到你想要的值:
struct MyVariables
static var urlString: [String]? = ["something"]
if let str = MyVariables.urlString?.first, let url = URL(string: str)
// use url in here
let request = URLRequest(url: url)
print(url)
现在我正在使用MyVariables.urlString?.first
,将来如果您想要另一个索引,那么您需要获得它。
【讨论】:
您忘记打开网址 if let url = URL(string: MasterViewController.MyVariables.urlString) // 在这里使用 url let request = URLRequest(url: URL(string: MasterViewController.MyVariables.urlString)!) 无法转换“[String] 类型的值?”到预期的参数类型“字符串”URLRequest(url: url)
你用错了。检查更新并阅读这些行以了解如何使用它。你声明了一个if let url
来使用它。【参考方案2】:
这是我为使它工作所做的:
让 stringRepresentation = MasterViewController.MyVariables.urlString?.joined(separator:"")
print ("urlString", MasterViewController.MyVariables.urlString)
print ("sR",stringRepresentation)
let url = NSURL(string: stringRepresentation as! String)
let request = URLRequest(url: url! as URL)
myWebview.scalesPageToFit = true
myWebview.loadRequest(request)
【讨论】:
以上是关于Swift 中的 Master Detail 应用程序 - 如何将字符串转换为 URL的主要内容,如果未能解决你的问题,请参考以下文章
Swift Master-Detail 模板问题(iOS 8 beta 3)
IOS Swift Master Detail Application, managed object, tableView: endUpdates() 调用configureCell() 但崩溃,r
核心数据 - NSManagedObjectContext 在 Master-Detail 应用程序中返回 nil
ViewPager 中的 Android Master/Detail 流程