2

我正在使用警卫功能,当我在下面输入警卫语句时:

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 子句,所以我写道:

else {return}

这次它抛出了错误“在 func 之外返回无效”,这令人困惑,我以前没有见过这个错误。所以我在返回后的状态中添加了 nil 。同样的错误。我不知道发生了什么事。帮助会给你我无限的感激。

4

2 回答 2

2

其他错误。保护条件必须有一个 else 关键字。我们可以将守卫视为带有空“if”的 if-else,并要求控制流在“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
}
于 2016-01-03T01:28:39.510 回答
1

error: return invalid outside of a funcreturn如果您在全局空间中使用语句,编译器会报告。守卫的 else 部分永远不会失败,因此如果您从中删除 return ,则会发生另一个错误。检查某些函数中的代码,看看有什么不同

于 2016-01-03T05:42:27.433 回答