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 流程

在 Master-Detail 应用程序的 DetailViewController 中显示文档

如何更新 laravel 中的 master 和 detail 表单?