[英]@EnvironmentObject Initializer 'init(_:)' requires that 'Binding<String>' conform to 'StringProtocol'
[英]Initializer 'init(_:)' requires that 'Binding<String>' conform to 'StringProtocol' SwiftUI Text
我正在重写我的应用程序,该应用程序使用组合将 SwiftUI 集合中的数字随机化。
import SwiftUI
import Combine
private final class SomeViewState: ObservableObject {
@Published var resultString = ""
}
struct SomeContent: View {
@StateObject private var state = SomeViewState()
func iterateAndRemove() -> (Set<Int>, Set<Int>){
var numbers = Set<Int>(1...50)
var results = Set<Int>()
for _ in 1...3{
let randomNumbers = numbers.randomElement()!
results.insert(randomNumbers)
numbers.remove(randomNumbers)
}
return (numbers, results)
}
var body: some View {
VStack{
Text("Some Text")
(...)
Text($state.resultString)
.multilineTextAlignment(.center)
.frame(width: 195, height: 70)
.background(Rectangle().fill(Color.white).shadow(radius: 3))
.padding()
Button("Randomise") {
let runFunction = iterateAndRemove()
theResult = runFunction.1
state.resultString = theResult.map(String.init).joined(separator: ", ")
}.padding()
如标题中所述,我得到了
Initializer 'init(_:)' requires that 'Binding<String>' conform to 'StringProtocol' SwiftUI Text
错误。 我在 Internet 上找到的唯一解决方案是当按钮引发此类错误时。 请帮忙!
Text
显示一个不可变的String
,因此它的初始化程序采用String
,而不是Binding<String>
。
所以注入String
,而不是Binding
。
Text(state.resultString)
此外, @State
应该只用在View
上。 resultString
应该是@Published
,而不是@State
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.