Ответ 1
Во-первых, я собираюсь предположить, что вам не нужны 2d-массивы. Если вы это сделаете, я отвечу на ваш вопрос с этой точки зрения ниже.
var foundation = [baseMakeUp]()
Создает пустой массив baseMakeUp, называемый основой. Вы не можете использовать subscript для добавления элементов в массив, вы можете использовать его только для изменения существующих элементов. Поскольку ваш массив пуст, вы добавляете элементы с добавлением.
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 к массиву, добавленному в первую строку. Третья строка использует индексирование для изменения рейтинга первого элемента в первом массиве вашего 2d-массива.
Надеюсь, это поможет с вашей проблемой.
Дополнительно
Я собирался добавить пункты 1 и 2 из jday001s здесь, но вы также должны проверить их ответ.
Edit
Я просто понял, что вы пытаетесь добавить элементы в свои массивы в неправильной области.
Вам нужно будет переместить
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
}
}
Надеюсь, что это полезно.