在类中,我有类变量,由具有静态成员的结构模拟,如下所示:
internal class DEAccountCheck : AccountCheck {
private struct Static {
static var methodParameters: [String: (UInt16, [UInt16])] = [ // Modulus + weights indexed by method id.
"00": (10, [2, 1, 2, 1, 2, 1, 2, 1, 2]),
"01": (10, [3, 7, 1, 3, 7, 1, 3, 7, 1]),
"02": (11, [2, 3, 4, 5, 6, 7, 8, 9, 2]),
"03": (10, [2, 1, 2, 1, 2, 1, 2, 1, 2]),
...
]
}
methodParameter字典有超过200行(条目)。如果我运行我的应用程序,我得到一个EXC_BAD_INSTRUCTION异常,调试器停在我的静态初始化程序的中间。当它开始发生时我检查了它,发现我最多可以有172个值。还有一个:噗。
由于我可以通过普通代码成功添加所有条目,因此如果静态初始化器存在一些已知限制,则会出现问题。
答案 0 :(得分:1)
事实证明,异常来自重复密钥,这是不允许的。如果Swift中的错误消息更加用户友好,那么问题就会变得容易得多。 Swift中的ATM错误消息非常糟糕。