假设我有一个类。
如果我的类(class)未遵循所描述的规则,我想在init
中给出错误
class Puzzle {
var puzzle_array: [Int]
var zero_index: Int
public init(array: [Int]) {
assert(array.count == 9, "Array should be lenght 9")
assert(array.index(of: 0) != nil, "There should ne 0 in array")
puzzle_array = array
zero_index = puzzle_array.index(of: 0)!
}
}
然后,我需要在循环中创建此类的几个实例。其中一些不满足条件,我在
init
和complier中进行了描述,但会出现错误。但是我想要的是跳过此实例的创建而不执行错误。而且我想继续检查
init
中的条件逻辑。我最初的想法可能是错误的,但是如果您能帮助我使其更正确,我将不胜感激。
最佳答案
您可以使用failable initialiser完成此操作,如果您不满意检查,则对象将为nil。
class Puzzle {
var puzzle_array: [Int]
var zero_index: Int
public init?(array: [Int]) {
guard array.count == 9, array.index(of: 0) != nil else {
return nil
}
puzzle_array = array
zero_index = puzzle_array.index(of: 0)!
}
}