У меня есть структура с двумя переменными внутри оболочки свойств. Предполагается, что одна из переменных вычисляется из другой. Когда я пытаюсь сделать это, я получаю следующую ошибку:
Невозможно использовать элемент экземпляра 'name' в инициализаторе свойства; инициализаторы свойств запускаются до того, как станет доступным 'self'.
Я попытался присвоить временные значения этим переменным, а затем переназначить их в пользовательской функции init (), но, похоже, это не рабочий эфир. Я сделал упрощенную версию кода, чтобы посмотреть, смогу ли я изолировать проблему.
import SwiftUI
struct Person {
@State var name: String = ""
@State var nameTag: NameTag = NameTag(words: "")
init(name: String) {
// not changing name and nameTag
self.name = name
nameTag = NameTag(words: "Hi, my name is \(name).")
}
}
class NameTag {
var words: String
init(words: String) {
self.words = words
}
}
var me = Person(name: "Myself")
// still set to initial values
me.name
me.nameTag.words
Я заметил, что когда я изменил nameTag на @ObservedObject, а не на @State, он мог быть повторно назначен правильно. Хотя я не верю, что могу изменить имя на @ObservedObject. Может кто-нибудь сказать мне, что я делаю не так? Я довольно новичок в Swift, так что все помогает.