我有一个 TableViewController,我试图将其通过 URL 传递到另一个 ViewController 上的 WebView
我正在重写下面的函数,如果我将 URL 设为静态,该函数就会起作用,正如您在注释 let newsLink
常量中看到的那样
let newsLink = "http://www.stuff.co.nz/business/industries/69108799/Kirkcaldie-Stains-department-store-to-become-David-Jones"
但是,下面的代码从 indexPath.row
中提取 URL
时,由于某种原因失败并传递了 nil
值
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){
let newsLink = (posts.objectAtIndex(indexPath.row).valueForKey("link") as! String)
//let newsLink = "http://www.stuff.co.nz/business/industries/69108799/Kirkcaldie-Stains-department-store-to-become-David-Jones"
println(newsLink)
let newsWebViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("idNewsWebViewController") as! NewsWebViewController
newsWebViewController.newsURL = NSURL(string: newsLink)
showDetailViewController(newsWebViewController, sender: self)
}
如果我 println() 下面的内容,我会得到与我在测试 let newsLink
常量中硬编码的 URL
完全相同的输出
println(posts.objectAtIndex(indexPath.row).valueForKey("link") as! String)
我不明白为什么会失败。希望比我聪明的人可以提供帮助。
接收端VC的代码如下”
var newsURL : NSURL!
//var newsURL = NSURL(string: "http://www.google.co.nz")
@IBOutlet weak var newsWebView: UIWebView!
@IBOutlet weak var descTextView: UITextView!
以及在viewDidAppear函数中
let request : NSURLRequest = NSURLRequest(URL: newsURL!)
newsWebView.loadRequest(请求)
更多信息
变量类型
var posts = NSMutableArray()
var elements = NSMutableDictionary()
我如何添加对象
elements.setObject(urlLink, forKey: "link")
posts.addObject(elements)
最佳答案
您能显示“posts”变量的声明/结构吗?
没有更多信息,我唯一能想到的是“link”的值实际上不是一个字符串,而是打印时显示该内容的东西(可能是 NSURL)。这可以解释 println 显示相同的 url 但转换失败。
当您打印或隐式地将任何对象转换为字符串(如 println 中)时,它会调用该对象的“description”方法。
例如:
class MyURLContainer {
var link:String
override func description() -> String {
return link
}
}
let url = MyURLContainer()
let url.link = "http://www.example.com"
println( "my link: \(url)" ) // this would show the link correctly
let link = url as? String // this will be nil, as url can't be casted to String
关于objective-c - 将 tabelview indexPath.row 作为字符串传递给 VC WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30637930/