gpt4 book ai didi

arrays - 创建一个类的所有对象的数组

转载 作者:搜寻专家 更新时间:2023-10-31 22:05:05 24 4
gpt4 key购买 nike

有没有一种方法可以创建一个包含所有已创建颜色对象的数组?以便每次添加新颜色时,它也自动添加到数组中?

class Colours {
var colourName: String
var colourShades: [String?]


init(colourName: String, colourShades: [String?]) {
self.colourName = colourName
self.colourShades = colourShades
}


}

var red = Colours(colourName: "Red", colourShades: ["Crimson", "Cherry", "Rose"])


var blue = Colours(colourName: "blue", colourShades:["Ice", "Baby", "Royal"])

为了提供一些背景信息,我正在尝试为 IOS 开发一个包含颜色表的应用程序。然后,当用户单击一种颜色时,它将把他们带到另一个具有该颜色阴影的表格。

我想要颜色数组,这样我就可以自动填充表格的行,然后当用户添加新颜色时,它会自动添加新行。

最佳答案

使用 Colours 中定义的静态数组来保存所有已创建的颜色。您可以从应用中的任何位置以 Colours.allColours 的形式访问此数组。

创建一个名为 ColourWatcher 的协议(protocol),并为将被通知的类在 Colours 上创建一个static delegate添加颜色时。

让您的 tableView 实现 ColourWatcher 并将其自身添加为 delegate。然后,当添加颜色时,方法 newColourAdded 将在您的 TableViewController 中调用,您可以重新加载数据。

此外,我建议将色调数组设为 [String] 而不是使用可选值。空数组表示您没有阴影。

protocol ColourWatcher: class {
func newColourAdded(colour: Colour)
}

class Colours {
static var allColours: [Colours] = []
static weak var delegate: ColourWatcher?

var colourName: String
var colourShades: [String]

init(colourName: String, colourShades: [String]) {
self.colourName = colourName
self.colourShades = colourShades
Colours.allColours.append(self)
Colours.delegate?.newColourAdded(colour: self)
}
}

class MyTableViewController: UIViewController, ColourWatcher {

func viewDidLoad() {
super.viewDidLoad()
Colours.delegate = self
}

func newColourAdded(colour: Colour) {
// reload table view or just insert a new row
// using the passed in colour
}
}

关于arrays - 创建一个类的所有对象的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45527049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com