请问怎么把 NSNotification.object: AnyObject? 转为 NSURL

2015-04-14 20:42:37 +08:00
 sobigfish

问题源于JadenGeller/Helium 一个极简的可以让你在浏览网页的同时做其他事(比如预览正在开发的网页)的浮动浏览器

现有的打开网页很麻烦,想为其加入url scheme打开的功能。

因为打算用NSNotification以配合之前的代码

NSNotificationCenter.defaultCenter().postNotificationName("HeliumLoadURL", object: urlObject)

而在view 注册,直接将object 设为NSURL.self的时候 获取不到

override func viewDidLoad() {
//...
NSNotificationCenter.defaultCenter().addObserver(self, selector: "loadURLObject:", name: "HeliumLoadURL", object: nil)
//...
}
func loadURLObject(urlObject:NSNotification) {
        let url:NSURL = (urlObject.object as! NSURL)  //怎么转?
        println("opening:\(url)")
        webView.loadRequest(NSURLRequest(URL: url))
}

请问怎么把NSNotification.object: AnyObject? 转为NSURL

2112 次点击
所在节点    iDev
5 条回复
jokester
2015-04-14 22:13:45 +08:00
哪源于那么远... cast是语法的一部分..

if let url = urlObject.object as? NSURL {
// 打开URL
}
sobigfish
2015-04-14 23:09:04 +08:00
@jokester 请问as! as?哪个更好点,如果清楚的知道传来的是NSURL 之类的object的话
jokester
2015-04-14 23:13:36 +08:00
@sobigfish 你真的十分确定就直接as.. 还可以兼作assert
这部分内容在swift guide的type casting一节
sobigfish
2015-04-15 08:43:56 +08:00
@jokester 感谢 你说的那个是1.2前的语法吧。
jokester
2015-04-15 10:09:43 +08:00
@sobigfish 嗯。。我们还没在用1.2

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/183709

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX