所以,我在Xcode中并从朋友那里编写一个小程序。
我想初始化一个对象的几个实例,将它们放在一个数组中然后遍历它(通过一个返回一个字符串的函数)。每个对象在迭代时都会向该字符串添加一些文本,具体取决于对象的变量。
让我们说这个班是树。类中的变量是name(字符串),height(int)和hasLeaves(bool)(它当前是否已经离开它的天气)。我可以轻松打印:
“这是一个名称 height 米高,有叶子。
问题是我希望字符串有点不同,具体取决于它是哪种树。像这样:
橡木(名称)很大而且很有生气,它的高度身高米,有叶子。
Apple树(名称)带有一些苹果,身高米高,有叶子。
如果您曾经访问过瑞典,您应该查看第一个(名称),它们身高高,没有叶子。
我不想让你为我编写代码,但请给我一个线索。我不知道该找什么。我正在考虑为每个树创建一个子类,但每个子类只会在程序中出现一次,我不知道它是否有必要。
正如你所知,我甚至很难制定这个问题,但如果你了解我的意图,我很高兴能得到任何线索。
编辑:这是我尝试在代码中显示它:
类别:
class tree {
var treeHeight: Int?
var treeWidth: Int?
var hasLeaves: Bool
var treeString: String
init (height: Int?, width: Int?, leaves: Bool, theString: String) {
self.treeHeight = height
self.treeWidth = width
self.hasLeaves = leaves
self.treeString = theString
}
}
主要功能:
var oak: tree = tree(height: 1, width: 2, leaves: true, theString:"Oh, the mighty oak")
var appleTree: tree = tree(height: 1, width: 2, leaves: false, theString: "Yummy Apples")
var treeArray: Array = [oak, appleTree]
var resultString = "This is the stories of the trees: "
for tree in treeArray {
if tree.hasLeaves == true {
resultString = resultString + tree.theString
}
}
所以,我想要添加到“resultString”的字符串是不同的,这取决于它是什么类型的树,但我不想在对象的初始化中设置该字符串,而是从“它的“树”。这会让它更容易理解吗?
我希望字符串(treeString)是静态的,具体取决于树的“种类”。因此,如果它是一个橡木,字符串总是“哦,可能橡树”。
答案 0 :(得分:0)
听起来你想要一个带有叶子等属性的树类。也许你也想要使用颜色等其他属性对叶子进行子类化。我推荐WWDC 2014视频:
大约30分钟左右,他们在子类中使用RaceCar演示了Car类。
关于创建对象,您可以单独构建每个对象,然后将它们作为一个选项在数组中收集。例如,可能在应用程序的表单中,用户输入类或子类的数据,然后创建一个对象,存储到主数组,然后将其存档到文件中。
答案 1 :(得分:0)
所以,如果有人绊倒这个问题,这就是我所学到的:
我一直在寻找子类和协议。有一些方法可以确定某个对象是否属于某个子类,在我的例子中,我可以使用某种方法和/或方法创建一个名为“Tree”的协议,然后为此协议创建子类,称为“oak”和“冷杉”。