非常简单:我得到 “可选类型 'NSURL 的值?' not unwrapped。”
在这两行上,我试图从我现有的一个 Objective-C 应用程序中翻译:
func urlForScene(sceneID:Scene) -> NSURL {
var filename:NSString = "Whatever"
let path = NSBundle.mainBundle().pathForResource(filename, ofType: "m4a")
return NSURL.fileURLWithPath(path)
}
我认为对于 path
为 nil 的可能性来说,这可能是一件非常简单的事情,但我没有发现任何其他问题让我知道我应该在这里做什么。如果这是一个愚蠢的问题,我们深表歉意。
如果 NSURL
没有解包,我应该解包吗?我需要以不同的方式调用 fileURLWithPath:
吗?
提前致谢。
最佳答案
NSURL.fileURLWithPath(path)
返回一个可选的 NSURL,如您在其声明中所见。
class func fileURLWithPath(path: String) -> NSURL?
但是您的 urlForScene
方法返回一个非可选的 NSURL。
如果确定会返回一个 URL,可以通过在末尾添加一个感叹号来解包(别名:unwrapping)
return NSURL.fileURLWithPath(path)!
但是,出于安全原因,我建议您在返回值之前检查是否为 nil:
let returningURL : NSURL? = NSURL.fileURLWithPath("http://www.lombax.it")
if let url = returningURL
{
return url
} else {
// do something else
}
关于Swift - NSURL fileURLWithPath 没有解包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27214814/