Swiftui 无法对不可变值&x27;自我';是不变的
因此,我一直在试图解决这个问题,这个问题已经在这里讨论了好几次,但我似乎无法真正理解这个问题来自何处,以及如何在我的应用程序中解决它。很抱歉,如果这是显而易见的,但我已经拿起SwiftUI一周前 基本上,我在这里做的是,我有一个名为Swiftui 无法对不可变值&x27;自我';是不变的,swiftui,getter,swift5.2,Swiftui,Getter,Swift5.2,因此,我一直在试图解决这个问题,这个问题已经在这里讨论了好几次,但我似乎无法真正理解这个问题来自何处,以及如何在我的应用程序中解决它。很抱歉,如果这是显而易见的,但我已经拿起SwiftUI一周前 基本上,我在这里做的是,我有一个名为countStrokes()的函数,其中我有一个字符串数组作为输入。首先,我将数组转换为int数组,然后计算数组的和,并将和作为字符串返回。 在此之后,我声明了一个名为strokes的新惰性变量,并通过调用countStrokes()函数对其进行初始化。 在视图中,我
countStrokes()
的函数,其中我有一个字符串数组作为输入。首先,我将数组转换为int数组,然后计算数组的和,并将和作为字符串返回。
在此之后,我声明了一个名为strokes
的新惰性变量,并通过调用countStrokes()
函数对其进行初始化。
在视图中,我只想使用Text()
模块打印笔划值。
任何关于如何修改我现有代码的想法都将不胜感激
import SwiftUI
struct Skore: View {
@State var skore: [String]
lazy var strokes: String = countStrokes(array: skore)
var body: some View {
Text(strokes)
}
}
func countStrokes(array: [String]) -> String {
let newArray = array.compactMap{Int($0)}
let total = newArray.reduce(0, +)
let totalString = String(total)
return totalString
}
你能做的是:
struct Skore: View {
@State var skore: [String]
@State var strokes: String = ""
var body: some View {
Text(strokes).onAppear(perform: loadData)
}
func loadData() {
self.strokes = countStrokes(array: skore)
}
}
func countStrokes(array: [String]) -> String {
let newArray = array.compactMap{Int($0)}
let total = newArray.reduce(0, +)
let totalString = String(total)
return totalString
}
struct ContentView: View {
@State var skore = ["1","2","3"]
var body: some View {
Skore(skore: skore)
}
}
你能做的是:
struct Skore: View {
@State var skore: [String]
@State var strokes: String = ""
var body: some View {
Text(strokes).onAppear(perform: loadData)
}
func loadData() {
self.strokes = countStrokes(array: skore)
}
}
func countStrokes(array: [String]) -> String {
let newArray = array.compactMap{Int($0)}
let total = newArray.reduce(0, +)
let totalString = String(total)
return totalString
}
struct ContentView: View {
@State var skore = ["1","2","3"]
var body: some View {
Skore(skore: skore)
}
}
最简单的方法就是内联使用函数。只要您的视图依赖于skore
状态和countStrokes
依赖于它,一旦skore
将被修改,相应的文本将被重新计算并显示正确的结果
struct Skore: View {
@State var skore: [String]
var body: some View {
Text(countStrokes(array: skore))
}
}
最简单的方法就是内联使用函数。只要您的视图依赖于skore
状态和countStrokes
依赖于它,一旦skore
将被修改,相应的文本将被重新计算并显示正确的结果
struct Skore: View {
@State var skore: [String]
var body: some View {
Text(countStrokes(array: skore))
}
}
为什么它是懒惰的而不是计算的?为什么它是懒惰的而不是计算的?