Ios 无法在SwiftUI的当前上下文中推断闭包类型
我试图在SwiftUI中使用ForEach传递列表中的简单字符串数组 这是我的密码Ios 无法在SwiftUI的当前上下文中推断闭包类型,ios,swiftui,Ios,Swiftui,我试图在SwiftUI中使用ForEach传递列表中的简单字符串数组 这是我的密码 import SwiftUI struct ContentView : View { var testArry:[String] = ["1", "a", "c"] var body: some View { List { ForEach(testArry) { obj in Text("test") } } } } #if DEBUG struct ContentVie
import SwiftUI
struct ContentView : View {
var testArry:[String] = ["1", "a", "c"]
var body: some View {
List {
ForEach(testArry) { obj in
Text("test")
}
}
}
}
#if DEBUG
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
错误:无法在当前上下文中推断闭包类型
您需要在数组上使用.identifiedby:\.self,以便SwiftUI将值本身用作标识符。因此,您应该使用以下命令更改代码
struct ContentView : View {
var testArry:[String] = ["1", "a", "c"]
var body: some View {
List {
ForEach(testArry.identified(by: \.self)) { obj in
Text("test")
}
}
}
}
您需要在数组上使用.identifiedby:\.self,以便SwiftUI将值本身用作标识符。因此,您应该使用以下命令更改代码
struct ContentView : View {
var testArry:[String] = ["1", "a", "c"]
var body: some View {
List {
ForEach(testArry.identified(by: \.self)) { obj in
Text("test")
}
}
}
}
或者,您可以使用.identifiedby:\.self,如下所示: 导入快捷键 结构ContentView:View{ var testArry:[字符串]=[1,a,c] var body:一些观点{ 名单{ ForEachtestArry.identifiedby:\.self{obj in 文本测试 } } } }
或者,您可以使用.identifiedby:\.self,如下所示: 导入快捷键 结构ContentView:View{ var testArry:[字符串]=[1,a,c] var body:一些观点{ 名单{ ForEachtestArry.identifiedby:\.self{obj in 文本测试 } } } }
尝试如下所示的一致性协议:-
struct ContentView: View {
var testArry: [TestArray] = [TestArray(value: "1"), TestArray(value: "a"), TestArray(value: "c")]
var body: some View {
List {
ForEach(testArry) { obj in
Text("\(obj.value)")
}
}
}
}
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
class TestArray: Identifiable {
let value: String
init(value: String) {
self.value = value
}
}
尝试如下所示的一致性协议:-
struct ContentView: View {
var testArry: [TestArray] = [TestArray(value: "1"), TestArray(value: "a"), TestArray(value: "c")]
var body: some View {
List {
ForEach(testArry) { obj in
Text("\(obj.value)")
}
}
}
}
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
class TestArray: Identifiable {
let value: String
init(value: String) {
self.value = value
}
}
这是正确的答案。ForEach方法签名已更改为Xcode 11 Beta 5,并且identifiedby:方法已被弃用:
公共结构ForEach,其中数据:RandomAccessCollection,ID:Hashable
自动完成显示为:
ForEachData,id:KeyPath,内容:Data.Element->content
因此,当使用Xcode 11 Beta 5时,您的代码将是:
导入快捷键
结构ContentView:View
{
var testArry:[字符串]=[1,a,c]
var body:一些观点
{
列表
{
//更新的ForEach方法,从Xcode 11 Beta 5开始
前庭遗嘱,id:\.self
{obj in
文本测试
}
}
}
}
这是正确的答案。ForEach方法签名已更改为Xcode 11 Beta 5,并且identifiedby:方法已被弃用:
公共结构ForEach,其中数据:RandomAccessCollection,ID:Hashable
自动完成显示为:
ForEachData,id:KeyPath,内容:Data.Element->content
因此,当使用Xcode 11 Beta 5时,您的代码将是:
导入快捷键
结构ContentView:View
{
var testArry:[字符串]=[1,a,c]
var body:一些观点
{
列表
{
//更新的ForEach方法,从Xcode 11 Beta 5开始
前庭遗嘱,id:\.self
{obj in
文本测试
}
}
}
}