Я довольно новичок в Swift и MVC.Я получаю html и анализирую его, чтобы создать список продуктов в сезон, который работает правильно.Затем я пытаюсь создать объекты пищи для каждого продукта и добавить их в список продуктов.Я могу создать объект питания, но когда я пытаюсь добавить его в список продуктов, я получаю сообщение об ошибке: Поток 1: Неустранимая ошибка: Неожиданно обнаружен ноль при развертывании Необязательное значение
Вот моя модель:
import Foundation
class food {
var foodImageName: String = ""
var foodName: String = ""
init(fn: String) {
foodName = fn
foodImageName = "FreshFruitAndVeg.jpg"
}
}
class foodList {
var listOfFoods:[food]
init() {
listOfFoods = []
}
func add(foodType:food) {
self.listOfFoods.append(foodType)
print("Food added!")
}
func delete(rowNum: Int) {
self.listOfFoods.remove(at: rowNum)
}
}
В моем FoodsViewController я получаю текущий месяц и из этого определяю текущий сезон и следующий сезон.Я размещаю html-теги в массив, который содержит много посторонней информации, поэтому я нахожу индекс элементов currentSeason и nextSeason.Получив эту информацию, я запускаю цикл for, используя эти индексы для создания объекта питания и добавления его в myFoodList.Я вижу, что объекты питания создаются, и могу распечатать содержимое, но когда я пытаюсь добавить его в myFoodList, выдается ошибка, описанная выше.
Я создаю свои переменные внутри FoodsViewController следующим образом:
var currentSeason = ""
var nextSeason = ""
var currentSeasonIndex = 0
var nextSeasonIndex = 0
var endIndex = 0
var myFoodList: foodList!
Вот фрагмент кода, в котором я создаю объект пищи и пытаюсь добавить его в foodList:
do {
for i in currentSeasonIndex+1..<nextSeasonIndex {
let text = try nextElements[i].text()
print("This season's foods: ", text)
let newFood = food.init(fn: text)
print ("New food to be added: ", newFood.foodName)
myFoodList.add(foodType: newFood)
for item in 0..<myFoodList.listOfFoods.count {
print("My food List: ", myFoodList.listOfFoods[item])
}
}
}
catch {
}
Я вижу в отладчике, что объект питания есть, но myFoodList всегда равен нулю, вызывая сбой в строке
myFoodList.add(foodType: newFood)
Я читал об ошибке и в основном понимаю, что онаожидает некоторого значения, но там ничего нет, отсюда и ноль, который я также вижу в отладчике.Хотя, возможно, мне нужно было инициализировать объект с помощью функции init (), но это просто вызывает ошибки при компиляции
Я не могу понять, почему эта функция добавления вызывает эту проблему.Кто-нибудь может указать, где я иду не так?