它发生在关于 iOS split view 的示例源代码中。
我想将 URL 信息发送到 detailViewController,因此首先定义名为 siteAddresses
类型的变量 String
。
var siteAddresses : [String]?
然后在 siteAddresses 数组中输入值:
siteAddresses = ["www.google.com", "www.apple.com"]
并定义函数 prepare for segue like
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
if let indexPath = self.tableView.indexPathForSelectedRow {
let urlString = siteAddresses?[indexPath.row]
let controller = (segue.destination as! UINavigationController).topViewController as! DetailViewController
controller.detailItem = urlString
controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem
controller.navigationItem.leftItemsSupplementBackButton = true
}
}
}
但是
controller.detailItem = urlString
这部分在运行时会出现问题。
错误是:
"Cannot assign value of type 'String?' to type 'NSDate?'"
//编辑
DetailViewController(接口(interface)):
internal var detailItem: NSDate? { get set }
声明:
func configureView() {
// Update the user interface for the detail item.
if let detail = detailItem {
if let myWebview = self.webView{
let url = NSURL(string: detailItem as String)
let request = NSURLRequest(URL : url!)
myWebview.scalesPageToFit = true
myWebview.loadRequest(request)
}
}
}
最佳答案
准备函数
controller.detailItem = urlString
到
controller.detailItem = urlString as AnyObject?
添加DetailViewController
var detailItem: AnyObject? { didSet { self.configureView() } }
关于Swift 3 - 无法将类型 'String?' 的值分配给类型 'NSDate' MasterViewController.swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45048522/