无法构造“错误”,因为它没有可访问的初始值设定项

时间:2016-11-10 10:16:57

标签: xcode swift3

不确定这是我的代码中的错误还是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会给我臭名昭着的红点(带惊叹号)错误:

'错误'无法构建,因为它没有可访问的初始化程序

每次我做错误(0)(无论我在构造函数中使用的Int)

我可以再次编译并运行,错误消失然后重新出现

使用XCode版本8.1(8B62)

********见评论****其他信息********

还是一个(现在将错误重命名为AppError后的类似问题)

func doSomething (blah: Int, test : String) -> AppError {

    some code
    return AppError(1)
}

它编译并运行但是在一段时间后,func doSomething

旁边会弹出一个错误

使用未声明类型'AppError'

1 个答案:

答案 0 :(得分:0)

错误是Swift协议,因此没有可访问的初始化程序。您的编译器可能会将Swift.Error与本地的Error混淆。在引用您的错误类型以避免混淆时,您应该包含名称空间,即

(目标名称)。错误

关于将类重命名为AppError后看到的错误,有一个XCode错误,在该应用程序编译和运行后,它会显示旧错误,只要它正在编译和运行,您就可以忽略这些错误。