不确定这是我的代码中的错误还是 XCode 中的故障。
我有这门课(为了清楚起见,简化版)
public class Error {
let errors: [ (title: String, message: String)] =
[("Some error title","Some error message"),
("Another error title", "Another error message")
]
var errorNo : Int
init (_ errorNo: Int) {
self.errorNo = errorNo
}
func title () -> String {
return self.errors[self.errorNo].title
}
func message () -> String {
return self.errors[self.errorNo].message
}
}
在我的另一个类上
if someCondition {
return Error (0)
}
现在奇怪的事情......一切都编译并运行,但如果我让 XCode 闲置一会儿(不是我正在使用的最快的计算机),XCode 会给我臭名昭著的红点(带感叹号)错误:
无法构造“错误”,因为它没有可访问的初始化程序
每次我执行 Error(0) 时旁边(无论我在构造函数中使用什么 Int )
我可以再次编译和运行,错误消失然后重新出现
使用 XCode 版本 8.1 (8B62)
******** 查看评论 **** 附加信息 ********
还是一个(将Error重命名为AppError后出现类似问题)
func doSomething (blah: Int, test : String) -> AppError {
some code
return AppError(1)
}
它可以编译并运行,但一段时间后 func doSomething 旁边会弹出一个错误
使用未声明的类型“AppError”
最佳答案
Error 是一个 Swift 协议(protocol),因此没有可访问的初始化程序。您的编译器可能会将 Swift.Error 与您的本地错误定义混淆。在引用您的错误类型以避免混淆时,您应该包括命名空间,即
(目标名称).Error
关于你在将你的类重命名为 AppError 后看到的错误,有一个 XCode 错误,它会在应用程序编译和运行后显示旧错误,只要它正在编译和运行,你可以忽略这些错误。
关于xcode - 无法构造“错误”,因为它没有可访问的初始化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40525046/