xcode - 无法构造“错误”,因为它没有可访问的初始化程序

标签 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 会给我臭名昭著的红点(带感叹号)错误:

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

每次我执行 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/

相关文章:

xcode - 在 XCode 4 中更改源文件编码

objective-c - 创建好友属性的正确方法

iphone - 如何将部署目标设置为 5.0.1

ios - ld : 1 duplicate symbol for architecture arm64, swift3 中的两个 SDK

swift - 迪尔德 : Library not loaded (multi-project workspace)

objective-c - 如何呈现一个(无 Nib )ViewController

ios - "Expression was too complex to be solved in reasonable time"在 swift 3 中向字典添加数据时,在 swift 2.3 中工作正常

ios - 从 Swift 中的 Eureka Forms 获取值

ios - 从 AnyObject 访问值时发生异常

ios - 替换字符串,无论其值如何