Как передать входной аргумент вида переменной @State?

#swift #view #swiftui #arguments

#Swift #Вид #swiftui #Аргументы

Вопрос:

У меня есть основной вопрос SwiftUI — у меня есть представление, которое принимает аргумент, в моем случае «symbolName», для которого я хотел бы получить цены. У меня есть функция класса, которая делает это, но передача аргумента view в FetchPrice в качестве аргумента не работает. Когда я использую фиксированную строку, такую как «GE», это работает. Я уверен, что есть правильный способ сделать это, спасибо за любые подсказки и советы!

Ошибка:

Невозможно использовать элемент экземпляра ‘symbolNameV’ в инициализаторе свойства; инициализаторы свойств запускаются до того, как будет доступен ‘self’

 import SwiftUI

struct SymbolRow2: View {
    var symbolNameV: String

    @ObservedObject var fetchPrice = FetchPrice(symbolName:symbolNameV)

...
 

Ответ №1:

инициализаторы свойств запускаются до того, как «self» станет доступным

Вызывая

 FetchPrice(symbolName: symbolNameV)
 

вы получаете доступ self . Приведенный выше код на самом деле:

 FetchPrice(symbolName: self.symbolNameV)
 

Чтобы решить эту проблему, вы можете создать пользовательский init :

 struct SymbolRow2: View {
    private var symbolNameV: String
    @ObservedObject private var fetchPrice: FetchPrice
    
    init(symbolNameV: String) {
        self.symbolNameV = symbolNameV
        self.fetchPrice = FetchPrice(symbolName: symbolNameV)
    }

    ...
}