首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SwiftUI - ForEach -类型“_”没有成员“name”

SwiftUI是一种用于构建用户界面的声明式框架,它是苹果公司推出的一种新的UI开发工具。它可以帮助开发者更快速、更简洁地创建跨平台的应用程序,包括iOS、macOS、watchOS和tvOS。

ForEach是SwiftUI中的一个视图构建器,用于根据给定的数据集合动态生成视图。它可以遍历一个集合,并为集合中的每个元素生成一个视图。在ForEach中,我们可以使用闭包来定义每个元素的视图,并且可以访问元素的属性和方法。

在你提供的问题中,出现了一个错误提示:“类型“_”没有成员“name””。这个错误提示通常是因为在ForEach中使用了一个未命名的占位符变量。解决这个问题的方法是,确保在ForEach中使用的数据集合中的元素具有一个名为“name”的属性。

以下是一个示例代码,展示了如何使用ForEach来遍历一个包含“name”属性的数据集合:

代码语言:txt
复制
struct ContentView: View {
    struct Person {
        var name: String
    }
    
    let people = [
        Person(name: "John"),
        Person(name: "Jane"),
        Person(name: "Bob")
    ]
    
    var body: some View {
        VStack {
            ForEach(people, id: \.name) { person in
                Text(person.name)
            }
        }
    }
}

在这个示例中,我们定义了一个名为Person的结构体,它具有一个名为“name”的属性。然后,我们创建了一个包含几个Person对象的people数组。在视图的body属性中,我们使用ForEach来遍历people数组,并为每个Person对象生成一个Text视图来显示其名称。

对于SwiftUI中的ForEach,我们可以使用id参数来指定一个唯一标识符,以帮助SwiftUI更好地管理视图的更新。在这个示例中,我们使用了.name来作为唯一标识符,因为每个Person对象的名称都是唯一的。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云开发者平台:https://cloud.tencent.com/developer
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发(移动推送、移动分析等):https://cloud.tencent.com/product/mobile
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云游戏多媒体引擎(GME):https://cloud.tencent.com/product/gme
  • 腾讯云音视频处理(VOD):https://cloud.tencent.com/product/vod
  • 腾讯云网络安全(SSL证书、DDoS防护等):https://cloud.tencent.com/product/safety
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

避免 SwiftUI 视图的重复计算

如果视图响应了不该响应的状态,或者视图的状态中包含了不该包含的成员,都可能造成 SwiftUI 对该视图进行不必要的更新( 重复计算 ),当类似情况集中出现,将直接影响应用的交互响应,并产生卡顿的状况。...@ObservedObject var store = Store() // 每次创建视图类型实例,都会重新创建 Store 实例 由于 SwiftUI 会不定时地创建视图类型的实例( 非加载视图 ),...SwiftUI 会将视图类型的构造参数作为 Source of Truth 对待。...例如:当 SwiftUI 在更新 ContentView 时,如果 SubView 的构造参数( name 、age )的内容发生了变化,SwiftUI 会对 SubView 的 body 重新求值(...{ SubView(name: "fat" , age: 99) } } 简单、粗暴、高效的比对策略 我们知道,在视图的存续期中,SwiftUI 通常会多次地创建视图类型的实例。

9.3K81
  • 只在视图 Body 中生存的变量

    SwiftUI 通过调用视图实例的 body 属性来获取视图值。...这意味着,通常我们只能在 body 中使用 ViewBuilder 认可的 Expression 来声明视图( 如果显式使用 return ,虽然可以避开 ViewBuilder 的限制,但因受只能返回一种类型的限制...同我们不要去推断在一个视图的存续期内,SwiftUI 会创建多少个该视图的实例一样,我们也不应假设,在渲染第一行数据之前,body 没有被调用过。...{ "text" // 假设经过大量计算 } } 这意味着,name 仅在 SwiftUI 对该 body 进行首次求值时才进行赋值( 通过 LargeCalculationResults...即使没有 Swift 5.8 的改进,我们一样可以利用场景一的替代方案来支持惰性变量: struct LazyDemo:View { @State var holder = LazyHolder

    68810

    在 iOS 16 中用 SwiftUI Charts 创建一个折线图

    系列文章 如何在 SwiftUI 中创建条形图 SwiftUI 中的水平条形图 在 iOS16 中用 SwiftUI 图表定制一个线图 在 Swift 图表中使用 Foudation 库中的测量类型 简单折线图...由于只有一个系列的数据,ForEach 可以省略,数据可以直接传递给 Chart 初始化器。两个部分都产生相同的折线图。...这些可以通过将图表标记从LineMark改为其他类型的标记(如BarMark)来生成条形图。...图表创建的其他图表类型,显示每日步数 使用 SwiftUI 图表创建的其他图表类型,显示每日步数 让折线图增加可访问性 将图表植入 SwiftUI 的一个好处是,可以很容易地使用可访问性修饰符[2]...Current Week", data: currentWeek), (period: "Previous Week", data: previousWeek) ] 第一次尝试添加这两个系列的数据没有按预期显示

    3.7K20

    如何让 SwiftUI 的列表变得更加灵活

    使用新速记语法 让我们从一个很小的特性开始,这是一个非常受欢迎的变化,可以使用类似 enum 的速记语法来引用 SwiftUI 附带的任何内置 ListStyle 类型。...为了演示这种情况,我们在 List 中嵌套一个 ForEach (因为在 SwiftUI 的中,列表变化一版都是由 ForEach 触发的,而不是由 List 触发的)。...} } .listStyle(.insetGrouped) } } 注意:关于上述创建集合元素绑定的新方法,即使我们的应用程序在较旧的操作系统版本上运行,也是没有问题的...由于每个 article 值在 ForEach 闭包中都是可变的,我们可以使用新的 swipeActions 修饰符来实现每个 NavigationLink 项目视图的自定义滑动操作。...} } ... } } 由于上述修饰符是在每个列表的 item 上调用的,而不是在列表本身上调用,这为我们提供了很大的灵活性,可以根据想要构建的 UI 类型动态隐藏或显示每个分隔符

    4.9K41

    在iOS 16中用SwiftUI Charts创建一个折线图

    在iOS 16中用SwiftUI Charts创建一个折线图 苹果在WWWDC 2022上推出了SwiftUI图表,这使得在SwiftUI视图中创建图表变得异常简单。...由于只有一个系列的数据,ForEach可以省略,数据可以直接传递给Chart初始化器。两个部分都产生相同的折线图。...这些可以通过将图表标记从LineMark改为其他类型的标记(如BarMark)来生成条形图。...图表创建的其他图表类型,显示每日步数 让折线图增加可访问性 将图表植入SwiftUI的一个好处是,可以很容易地使用可访问性修饰符使图表变得可访问。...Current Week", data: currentWeek), (period: "Previous Week", data: previousWeek) ] 第一次尝试添加这两个系列的数据没有按预期显示

    3.4K20

    SwiftUI 与 Core Data —— 数据获取

    在 State 中使用 IdentifiedArray 类型保存数据集,以便通过 .forEach 对 Reducer 进行拆分。...在 SwiftUI 中,ForEach 会根据数据标识( Identifier )自动处理视图的添加、删除等操作,因此,当在 SwiftUI 中使用 NSFetchedResultsController...这将有两个作用:数据变化后将引发与其绑定的视图进行更新由于底层数据并不保存在视图中,因此在视图存续期中 SwiftUI 可以随时创建新的视图描述实例而无需担心数据丢失虽然苹果没有公开 _makeProperty...但如果在视图尚未加载或没有提供环境值( 例如忘记注入环境对象,没有提供正确的视图上下文 )的情况下访问环境数据,将引发应用崩溃。...这样可以减少 ForEach 数据集的变化频次,改善 SwiftUI 的视图效率。

    4.6K30

    AnyView 对 SwiftUI 性能的影响

    前言AnyView 是一种类型擦除的视图,对于 SwiftUI 容器中包含的异构视图非常方便。在这些情况下,你不需要指定视图层次结构中所有视图的具体类型。...如果是 AnyView(基本上是一个包装类型),SwiftUI 将很难确定视图的身份和结构,并且它将重新绘制整个视图,这并不是真正高效的。...你可以在这个出色的 WWDC 演讲中找到有关 SwiftUI 差异机制的更多细节。Apple 也多次提到,我们应该避免在 ForEach 中使用 AnyView,称其可能会导致性能问题。...没有 AnyView在没有 AnyView 包装器的情况下进行测试产生了与常规滚动测试相似的结果(58-59 FPS)。这也是预期的,因为 SwiftUI 知道视图的标识和结构。...在这篇文章中,使用 AnyView 与使用 if-else 语句的不同类型的测试显示出没有显着差异。

    14200

    onAppear 的调用时机

    onAppear( task )是 SwiftUI 开发者经常使用的一个修饰符,但一直没有权威的文档明确它的闭包被调用的时机。...判断视图正准备渲染尽管 SwiftUI 视图并没有提供可以展示该过程的 API,不过我们可以利用 UIViewControllerRepresentable 协议来包装一个 UIViewController...进行求值计算到 Text ,创建 Text 实例创建实例时,需要调用 getWord 来获取参数此时由于 newWords 数组为空,因此出现数组越界的错误也就是说,在第一段代码报错时,该视图甚至还没有进入到布局阶段...newWords.isEmpty { Text(getWord(at:0))}第二段代码对 List 进行求值由于 ForEach 会根据 newWords 的数量进行子视图的处理,因此尽管此时...onAppear 闭包,给 newWords 赋值由于 newWords 是该视图的 Source of truth ,发生改变后,导致视图重新刷新重复上面的过程,此时 newWords 已经有值了,ForEach

    2.1K20

    onAppear 的调用时机

    onAppear( task )是 SwiftUI 开发者经常使用的一个修饰符,但一直没有权威的文档明确它的闭包被调用的时机。...判断视图正准备渲染 尽管 SwiftUI 视图并没有提供可以展示该过程的 API,不过我们可以利用 UIViewControllerRepresentable 协议来包装一个 UIViewController...进行求值 计算到 Text ,创建 Text 实例 创建实例时,需要调用 getWord 来获取参数 此时由于 newWords 数组为空,因此出现数组越界的错误 也就是说,在第一段代码报错时,该视图甚至还没有进入到布局阶段...newWords.isEmpty { Text(getWord(at:0)) } 第二段代码 对 List 进行求值 由于 ForEach 会根据 newWords 的数量进行子视图的处理,因此尽管此时...onAppear 闭包,给 newWords 赋值 由于 newWords 是该视图的 Source of truth ,发生改变后,导致视图重新刷新 重复上面的过程,此时 newWords 已经有值了,ForEach

    1.1K10

    SwiftUI 的动画机制

    SwiftUI 为我们提供了几种开箱即用的数据类型,例如:Float、Double、CGFloat 等。...同所有 SwiftUI 的视图修饰符一样,在代码中所处的位置决定了修饰符的作用对象和范围。 animation 的作用对象仅限于它所在视图层次及该层次的子节点。 上面两段代码没有对错之分。...AnimatablePair 类型,以便 SwiftUI 可以传递分属于不同依赖项的动画插值数据。...foreach_id_error_2022-05-09_16.41.18.2022-05-09 16_43_22 为 ForEach 提供具有唯一标识的数据源可有效避免因此而产生的动画异常。...尽管 UIViewRepresentableContext 已经为底层控件提供了动画控制所需的 Transaction 信息,但是当前 SwiftUI 的官方控件并没有对此进行响应。

    14.8K40

    深入了解 SwiftUI 5 中 ScrollView 的新功能

    // Color.clear.frame(width:20) // } } } } 该属性不仅适用于可滚动视图,而适用于所有类型的视图...NamedCoordinateSpace.scrollView 在 SwiftUI 5 中,苹果新增了 NamedCoordinateSpace 类型,方便用户命名坐标系,并提供了预置的 .scrollView...表示视图目前在可见区域中 bottomTrailing: 视图滑出滚动容器的可见区域 scrollTransition 的 transition 闭包要求你返回一个符合 VisualEffect[7] 协议的类型...(VisualEffect协议定义了一种不影响视图布局的效果类型,苹果已经让很多 Modifier 符合了该协议)。...总结 我完全没有想到,在 SwiftUI 5 中,苹果对 ScrollView 进行了全面增强。值得赞赏的是,他们不仅提供了一些一直期待的功能,而且在 API 的设计和实现完成度上都非常出色。

    83620

    优化在 SwiftUI List 中显示大数据集的响应效率

    首先创建一个假设性的需求: 一个可以展示数万条记录的视图 从上个视图进入该视图时不应有明显延迟 可以一键到达数据的顶部或底部且没有响应延迟 响应迟钝的列表视图 通常会考虑采用如下的步骤以实现上面的要求:...通过检查 ListEachRowHasID 的 body 的求值消耗时间,也没有发现任何的效率问题。...)中的视图类型和具体位置来区分视图。...在 SwiftUI 中为视图设置显式标识目前有两种方式: 在 ForEach 的构造方法中指定 由于 ForEach 中的视图数量是动态的且是在运行时生成的,因此需要在 ForEach 的构造方法中指定可用来标识子视图的...除非没有其他选择,否则我并不推荐大家对 UIKit ( AppKit ) 控件进行重新包装,应使用尽可能微小的侵入方式对 SwiftUI 的原生控件进行补充和完善。

    9.2K20
    领券