Ваша проблема в том, что вы создали объект Question
в двух местах.
Посмотрите на сообщение об ошибке:
Невозможно преобразовать значение типа 'ThisViewController.Question' в ожидаемый тип элемента 'UserEntries.Question'.
Теперь посмотрите на код, который вы указали. Сначала я думаю, что это YourViewController
:
struct Question {
let question: String
let answer: String
}
struct UserEntry {
let date: String
let questions: [Question]
}
let userEntry = [UserEntries(date: todayDate, questions: [Question(answer: mood), Question(question: q1Text, answer: q1Answer), Question(question: q2Text, answer: q2Answer)])]
А потом:
class UserEntries: NSObject, NSCoding {
struct Question {
var question: String
var answer: String
}
...
Итак ... У вас есть Question
, определенный в вашем ThisViewController
, а затем у вас есть еще один Question
, определенный в вашем UserEntries
классе.
Компилятор говорит вам, что он думал, что вы используете ThisViewController.Question
, который вы не можете добавить к UserEntries.Question
, поскольку это две разные вещи для компилятора.
Решение
Поскольку вы переместили свою логику Question
и UserEntry
в класс UserEntries
, который соответствует NSCoding
, она вам больше не нужна и в YourViewController
.
Итак, удалите структуры Question
и UserEntry
из вашего YourViewController
, чтобы у вас было только Question
в UserEntries
, и все должно (надеюсь) сработать снова.
Надеюсь, это поможет.