Xcode 可选类型的值';字符串?';没有打开包装?

Xcode 可选类型的值';字符串?';没有打开包装?,xcode,swift,Xcode,Swift,我真的不确定错误在说什么,我需要做什么来修复它? 我已经试过使用这两种方法了!还有 代码: 谢谢 我假定path是一个可选字符串(声明为string?),因此必须先将其展开,然后再将其提供给方法。最安全的方法是使用可选绑定: if let path = path { var sceneData = NSData.dataWithContentsOfFile(path, options: .DataReadingMappedIfSafe, error: nil) } 但是,据我所知,da

我真的不确定错误在说什么,我需要做什么来修复它? 我已经试过使用这两种方法了!还有

代码:

谢谢
我假定
path
是一个可选字符串(声明为
string?
),因此必须先将其展开,然后再将其提供给方法。最安全的方法是使用可选绑定:

if let path = path {
    var sceneData = NSData.dataWithContentsOfFile(path, options: .DataReadingMappedIfSafe, error: nil)
}
但是,据我所知,
dataWithContentsOfFile
方法不可用-您应该使用对象初始化对应项:

if let path = path {
    var sceneData = NSData(contentsOfFile: path, options: .DataReadingMappedIfSafe, error: nil)
}

或者您可以使用
在确定选项不能为空时自动展开选项

var sceneData = NSData.dataWithContentsOfFile(path!, options: .DataReadingMappedIfSafe, error: nil)

这很酷,但我现在遇到了下一行的问题:
var archiver=NSKeyedUnarchiver(forReadingWithData:sceneData)
使用未解析标识符sceneData..您可能必须将该行移到
if
正文中。但是,如果您确定
path
不是nil,也可以使用强制展开运算符,正如@moise2022在其答案中所建议的那样
var sceneData = NSData.dataWithContentsOfFile(path!, options: .DataReadingMappedIfSafe, error: nil)