我想使用类中的@State初始化结构中的@Binding。
请参见代码中的注释“ //问题在这里”。我尝试过:
$junk = model.$junk
junk = model.$junk
junk = model.junk
这会编译...
import SwiftUI
struct Junk_Test: View {
@Binding var junk: String
var body: some View {
Text("\(junk)")
}
}
class JunkModel {
@State var junk = "xyz"
}
struct Junk_Test_Previews: PreviewProvider {
static var previews: some View {
Junk_Test(junk: JunkModel().$junk)
}
}
这不能编译...
import SwiftUI
struct Junk_Test: View {
@Binding var junk: String
init(model: JunkModel) {
$junk = model.$junk // problem here
}
var body: some View {
Text("\(junk)")
}
}
class JunkModel {
@State var junk = "xyz"
}
struct Junk_Test_Previews: PreviewProvider {
static var previews: some View {
Junk_Test(model: JunkModel())
}
}
我认为这些都可以编译。有办法吗?
答案 0 :(得分:0)
$junk
在访问projection property的同时
_junk
是您要初始化的synthesized storage property。
答案 1 :(得分:-2)
您不能具有具有@State属性的类,@ State用于符合View协议的结构。 对于类,您使用ObservableObject协议,并使用@ObservedObject绑定到它们。 另外,让编译器为您生成一个初始化程序:
test_case = int(input())
for x in range(test_case):
my_list = input().split()
count = 1
for each_element in my_list:
if each_element == len(my_list):
if each_element[1] == my_list[0][0]:
temp = 1
break
else:
to_compare = my_list[count]
if each_element[1] == to_compare[0]:
temp = 1
break
else:
temp = 0
count += 1
print("LOOP" if temp == 0 else "NO LOOP")