使用应该失败的Applescript命令运行NSAppleScript.executeAndReturnError
并返回错误时,Can't unwrap Optional.None
会出现errorDict
错误。
var errorDict: NSDictionary? = nil
var scriptObject:NSAppleScript = NSAppleScript(source: command)
var execute:NSAppleEventDescriptor = scriptObject.executeAndReturnError(&errorDict)
我理解错误是由于展开nil
可选变量,但executeAndReturnError
必须采用可选变量。我怎么能解决这个问题?
答案 0 :(得分:5)
尝试初始化NSAppleScript
对象而不是NSDictionary?
对象时,很可能会发生此错误。 NSAppleScript(source:)
是failable initializer,这意味着如果编译脚本时发生错误,它可能会返回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:)
不再返回Optional
类型,即使它可以返回nil
(请参阅此{ {3}})。处理执行失败的正确方法是检查errorInfo
字典是否有错误。