我对Swift和iOS编程很新,只对类和对象有一个粗略的了解。
以下是相关代码:
class Step {
var notation: String
init (notation: String) {
self.notation = notation
}
}
class AlgorithmMaker {
let F = Step(notation: "F")
let Fi = Step(notation: "F'")
let F2 = Step(notation: "F2")
var frontArray = [F, Fi, F2]
}
我正在尝试从AlgorithmMaker类中的“Step”类创建一个对象数组。但是,Xcode一直给我错误:
'AlgorithmMaker.Type'没有名为'F'的成员
答案 0 :(得分:0)
用以下内容替换该类中的所有内容:
var frontArray = [Step(notation: "F"), Step(notation: "F'"), Step(notation: "F2")]
或者用var frontArray : [Step] = []
替换你的frontArray并添加:
override init() {
frontArray = [F, Fi, F2]
}
问题是将frontArray声明为[F, Fi, F2]
在技术上是一个逻辑,这意味着你不能把它放在一个类的方法之外。
答案 1 :(得分:0)
这是因为你无法在初始化期间调用其他属性而你正在内部执行此操作。
答案 2 :(得分:0)
当你初始化类成员时,当前范围是类范围,所以当你这样做时
var frontArray = [F, Fi, F2]
你实际上在做什么
var frontArray = [self.F, self.Fi, self.F2]
和self
是此范围内的类本身,在这种情况下为AlgorithmMaker
。
作为解决方案,您可以使用初始化程序并执行
class AlgorithmMaker {
let f = Step(notation: "F")
let fi = Step(notation: "F'")
let f2 = Step(notation: "F2")
var frontArray: [Step]
init() {
frontArray = [f, fi, f2]
}
}