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