Swift Can';t展开可选。使用自动删除安全指针无

Swift Can';t展开可选。使用自动删除安全指针无,swift,Swift,在使用Applescript命令运行NSAppleScript.executeAndReturnError时,如果Applescript命令失败并返回错误,我会得到一个无法展开的可选选项。对于errorDict,无错误 var errorDict: NSDictionary? = nil var scriptObject:NSAppleScript = NSAppleScript(source: command) var execute:NSAppleEventDescriptor = scri

在使用Applescript命令运行
NSAppleScript.executeAndReturnError
时,如果Applescript命令失败并返回错误,我会得到一个
无法展开的可选选项。对于
errorDict
,无
错误

var errorDict: NSDictionary? = nil
var scriptObject:NSAppleScript = NSAppleScript(source: command)
var execute:NSAppleEventDescriptor = scriptObject.executeAndReturnError(&errorDict)

我知道该错误是由于展开了一个
nil
可选变量,尽管
executeAndReturnError
必须采用可选变量。如何修复此问题?

此错误很可能是在尝试初始化
NSAppleScript
对象时发生的,而不是您的
NSDictionary?
对象
NSAppleScript(源代码:)
是一个,这意味着如果编译脚本时出错,它可能返回
nil
。您的代码应该如下所示:

if let scriptObject = NSAppleScript(source: command) {
    var errorDict: NSDictionary? = nil
    let execute = scriptObject.executeAndReturnError(&errorDict)
    if errorDict != nil {
        // script execution failed, handle error
    }
} else {
   // script failed to compile, handle error
}
Sulthan的回答很有道理,但从Swift 1.2开始,
executeAndReturnError(errorInfo:)
不再返回
可选的
类型,即使它可能返回
nil
(参见此)。处理执行失败的正确方法是检查
errorInfo
字典中的错误