2014-12-29 23 views
0

当在Mac应用程序转换PathForResource至字符串返回零斯威夫特

let urlpath = NSBundle.mainBundle().pathForResource("myResource", ofType: "html"); 

加载本地资源文件中的资源路径转换为stringNSURL总是返回nil

println("resource path = \(urlpath)") <---resource logged ok 

    web.frameLoadDelegate = self; 
    let requesturl = NSURL(string: urlpath!) 

    println("URL String = \(requesturl)"),<---- returns nil 

    let request = NSURLRequest(URL: requesturl!) 
    web.mainFrame.loadRequest(request) 

这大概就是为什么即时获取错误found nil while unwrapping an Optional value 我在这里错过了什么,以正确地将pathForResource转换为string

+0

你的意思是将资源路径字符串转换为NSURL权利? –

+0

是的,我想我需要得到一个字符串值? (第一次尝试mac应用程序开发,所以我可能会错) – JSA986

+0

如果您显示println()语句的实际输出将会很有帮助。 –

回答

0

在莱昂纳多的回答提供的代码应工作,是更容易,更安全 方法具有可选的结合。这就是为什么你的 代码失败的解释:

let requesturl = NSURL(string: urlpath!) 

回报nil因为urlpath文件路径而不是URL字符串 (如“文件:///路径/到/文件” )。

如果更换符合

let requesturl = NSURL(fileURLWithPath: urlpath!) 

那么你会得到预期的输出。

+0

好的,但是这给了我一样的'urlPath''可选(file:/// Users/***** **/Library/Developer/Xcode/DerivedData/Electrical_Calcula tors-askhpxrxvlxbdxcfdbyosdczzquo/Build/Products/Debug/Electrical%20Calculators.a pp/Contents/Resources/myResource.html)' – JSA986

+0

我认为问题现在显示html文件作为即时得到它现在加载(有点),感谢解释 – JSA986

+0

@ JSA986:奇怪,我测试了你的确切代码,并且第一个println产生了输出'resource path = Optional(“/ Users /.../ Build/Products/Debug/Electrical Calculator.app/Contents/Resources/myResource.html“)',不带'file:///'。 –

4
if let myFileUrl = NSBundle.mainBundle().URLForResource("yourFile", withExtension: "html"){ 
      // do whatever with your url 
} 
+0

感谢您的回答,加1 – JSA986

+0

不客气 –