我正在使用保护功能,当我输入以下保护声明时:
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。相同的错误。我不知道发生了什么。帮助会给你无限的感激。
答案 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
。后卫的其他部分永远不会失败,所以如果你从中删除了返回,则会发生另一个错误。检查你的代码里面的一些函数,看看差异