Swift 2.0后卫给了我错误

时间:2016-01-03 01:20:00

标签: swift swift2 guard guard-statement

我正在使用保护功能,当我输入以下保护声明时:

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}

这一次它抛出错误'返回无效的功能'这令人困惑,我以前没见过这个错误。所以我在返回后将状态添加为nil。相同的错误。我不知道发生了什么。帮助会给你无限的感激。

2 个答案:

答案 0 :(得分:2)

其他错误。保护条件必须包含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
}

答案 1 :(得分:1)

如果您在全局空间中使用error: return invalid outside of a func语句,编译器会报告

return。后卫的其他部分永远不会失败,所以如果你从中删除了返回,则会发生另一个错误。检查你的代码里面的一些函数,看看差异

相关问题