Swift - NSURL fileURLWithPath 没有解包?

标签 swift nsurl option-type

非常简单:我得到 “可选类型 '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/

相关文章:

iOS Swift - 关于蓝牙低功耗管理器中的信号量和排序的问题

ios - 如何修复 : Use of undeclared type 'URL' & Use of unresolved identifier 'DispatchQueue' in Swift?

ios - 如何通过跳过选项卡栏 Controller 将数据从 VC 传递到另一个

ios - 如何使用 Swift 从 URL 获取 HTML 源代码

swift - Apple Watch Glance——使用 NSURL 加载数据

java - 尝试查找元素时如何使用列表上的流抛出异常?

swift - 为什么要创建 "Implicitly Unwrapped Optionals",因为这意味着您知道有一个值?

java - 给定 `T` 和 `U` 其中 `T extends U` 如何返回 `U`

function - 将内联函数定义作为输入参数传递给函数

ios - Xcode 将一个框架链接到另一个框架