#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)
}
...
}