Swift 2.0 守卫给我错误

Swift 2.0 guard giving me errors

我正在使用 guard 函数,当我在下面输入 guard 语句时:

var IOUArray = [IOU(amount: 20, payer: "Isabella", description: 
"test"),IOU(amount: 30, payer: "Dad", description: "Test2")]
NSKeyedArchiver.archiveRootObject(IOUArray, toFile: "IOUArray")
guard
    let books = NSKeyedUnarchiver.unarchiveObjectWithFile("IOUArray") as? [IOU]

我收到错误 'Expected else after guard condition' 这没什么大不了的,因为无论如何我都想添加一个 else 子句,所以我写道:

else {return}

这次它抛出了错误 'Return invalid outside of func' 令人困惑,我以前从未见过这个错误。所以我然后将 nil 添加到 return 之后的状态。同样的错误。我不知道发生了什么。帮助将给你我无限的感激。

其他错误。 保护条件必须有一个 else-keyword。我们可以将守卫想象成一个 if-else 和一个空的 "if" 并且要求控制流终止于 "else."

这是正确的代码

var IOUArray = [IOU(amount: 20, payer: "Isabella", description:
    "test"),IOU(amount: 30, payer: "Dad", description: "Test2")]
NSKeyedArchiver.archiveRootObject(IOUArray, toFile: "IOUArray")
guard let books = NSKeyedUnarchiver.unarchiveObjectWithFile("IOUArray") as? [IOU] else {
   return
}
如果您在全局 space 中使用 return 语句,编译器会报告

error: return invalid outside of a func。 guard 的 else 部分永远不会失败,因此如果您从中删除 return ,则会发生另一个错误。在某个函数中检查你的代码,看看有什么不同