ios – 如何在Swift中正确声明自定义对象的数组?

这是我的自定义类…不知道如果我错过任何东西…

import UIKit

class baseMakeUp {
    var Image = UIImage()
    var Brand: String
    var Color: String
    var Rating: Int = 0

    init (Brand: String, Color: String) {
        self.Brand = Brand
        self.Color = Color
    }
}

我试图在这里实例化

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    let cellIdentifier = "cellIdentifier"

    var foundation: [[baseMakeUp]]
    var blush: [[baseMakeUp]]
    var eyes: [[baseMakeUp]]
    var lips: [[baseMakeUp]]
    var nails: [[baseMakeUp]]

    // put some test data in makeup arrays here...
    foundation[0].Brand = "Revlon"     -------------> "Expected declaration" error.
    foundation[0].Color = "Red"
    foundation[0].Rating = 3
    foundation[1].Brand = "MAC"
    foundation[1].Color = "Blue"
    foundation[1].Rating = 4

我没有包括其他的ViewController类,因为我不认为这是必要的。

当我尝试为foundation [0] .Brand分配一个值时,会发生错误

提前了解您的帮助!

首先,我要假设你不想要2d数组。如果你这样做,我会从下面的角度回答你的问题。

    var foundation = [baseMakeUp]()

创建一个名为foundation的baseMakeUp的空数组。您不能使用下标将元素添加到数组,您只能使用它来更改现有元素。由于您的数组为空,您可以添加附加元素。

   foundation.append(baseMakeUp(Brand: "Brand", Color: "Color"))

因为您没有一个baseMakeUp初始化程序,可以让您传递元素评级为0的评级。但是,由于您将其附加到数组中,您现在可以使用下标来更改其评级变量,如下所示:

foundation[0].Rating = 3

如果您打算使用2d阵列。

    var foundation = [[baseMakeUp]]()

创建数组

    foundation.append([])
    foundation[0].append(baseMakeUp(Brand: "Brand", Color: "Color"))
    foundation[0][0].Rating = 3

第一行将空数组附加到顶级数组。第二行将baseMakeUp附加到第一行中添加的数组。第三行使用下标来更改第二个数组的第一个数组中第一个元素的等级。

希望有助于您的问题。

另外

我要从jday001s的答案中添加点1和2,但是你也应该查看他们的答案。

编辑

我只是意识到你正在尝试在错误的范围内为数组添加元素。

你必须移动你的

foundation.append(baseMakeUp(Brand: "Brand", Color: "Color")

在函数内部调用它,或者将它们放在像ViewDidLoad这样的内容中

例如:

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    var foundation = [baseMakeUp]()

    override func viewDidLoad() {
        super.viewDidLoad()

        foundation.append(baseMakeUp(Brand: "Brand", Color: "Color")
        foundation[0].Rating = 3
    }
}

希望这是有帮助的。

翻译自:https://stackoverflow.com/questions/28163034/how-to-properly-declare-array-of-custom-objects-in-swift

转载注明原文:ios – 如何在Swift中正确声明自定义对象的数组?