swift - 在加载 View 之前如何在 SwiftUI 中初始化值?

标签 swift swiftui

我想说一个股票价格,然后在二维数组中生成 0.05% 以内的值。

我正在传递股票信息,例如股票名称和股票价格。

但是,当我尝试运行一个创建二维值数组的方法时,我遇到了“无法在属性初始值设定项中使用实例成员 '';属性初始值设定项在 'self' 可用之前运行”

我正在寻找如何解决这个问题。

假设亚马逊股票为 2400。此数据传递到新 View 中。我想要做的是创建一个 2400 附近值的二维数组,可能是 2405 和 2395。我想要在新 View 中生成这些值的二维数组。但是我收到一个错误,在加载 View 之前我无法生成值,但我需要它们来生成 View 。

我想我必须使用 init 方法,但我不确定如何使用。

这是引发上述错误的行。

var new_prices = generateValues(price: position.stock_price)

这是方法
func generateValues(price: Double) -> [[Double]] {
    var values = [[Double]]()
     for x in 1...5 {
        values[0][x-1] = (price + price * 0.005 * Double(x))
    }
    return values
}

这是在股票位置传递的内容
struct Position : Identifiable {
    var id = UUID()
    var stock_name: String
    var stock_ticker: String
    var stock_price: Double
    var price_paid: Double

}

传递的参数在没有参数 init() 时抛出错误。
struct PositionDetail_Previews: PreviewProvider {
    static var previews: some View {
        PositionDetail(position: Position(stock_name: "Amazon", 
stock_ticker: "AMZN", stock_price : 2400, price_paid : 2300))
    }
}

最佳答案

你可以做

struct ContentView: View{
@State var new_prices = [[Double()]]
        init () {
            new_prices = generateValues(price: position.stock_price)
        }
    var body: some View{
           your view...
     }
}

关于swift - 在加载 View 之前如何在 SwiftUI 中初始化值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62034309/

相关文章:

ios - 查看协调者/委托(delegate)消失功能?

ios - SwiftUI View 和 UIKit View 的 z-index

ios - UIBezierPath - byRoundingCorners - 矩形

ios - 重置保存的 map 图钉,iOS Swift

ios - 在 Firebase 存储中高效存储图片?

使用 NavigationLink isActive 时 View 之间的动画不起作用

ios - 如何在 SwiftUI 中对列表中的值求和?

pdf - 为什么在 SwiftUI 中调整 PDF 的大小会变得锐利?

swift - 永远不会使用不可变值 X 考虑用 Swift 2 中的 '_' 错误替换

swift - iOS 15.0 中已弃用“windows”