过滤 For Each 循环 - swiftui

Posted

技术标签:

【中文标题】过滤 For Each 循环 - swiftui【英文标题】:Filtering a For Each loop - swiftui 【发布时间】:2020-11-26 16:22:44 【问题描述】:

我是 SwiftUI 的新手,如果这是一个非常愚蠢的问题,我深表歉意,但我似乎无法弄清楚如何过滤我想通过部分 ID 或部分名称过滤数据的会话。非常感谢任何帮助!

let sessions = Bundle.main.decode([SessionsSection].self, from: "sessions.json")
    
    
var body: some View 
    
    //NavigationView 
        

        List 
            
            ForEach(sessions)  section in
                Section(header: Text(section.name)) 
                    
                    // Items in sections
                    ForEach(section.items)  item in
                        
                        ItemRow(item: item)
                    
                
                
            
         // List end bracket

【问题讨论】:

【参考方案1】:

你也可以filter 在 Swift 5 中使用键路径:

extension SessionsSection 
  var isIncluded: Bool 
    return self.id >= 1 || self.name == "selection"
  


ForEach(sessions.filter(\.isIncluded))  section in
  // Insert code from above.

【讨论】:

非常感谢!!这确实有效:)【参考方案2】:

你可以在ForEach中使用.filter(_ :)函数

ForEach(sessions.filter 
    $0.id == 0 //<< here comes your predicate, id or name. Return true if should be included
)  section in

【讨论】:

非常感谢!!不幸的是,因为我使用 UUID 格式作为 id,所以我不能使用这个:/ 除非,我误解了它..?

以上是关于过滤 For Each 循环 - swiftui的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI List 和 For Each 循环与空白元素

SwiftUI ForEach Binding 编译时错误看起来不像 for-each

Effective Java 读书笔记之七 通用程序设计

js 跳出for/for in/each/for each 循环

jquery中使用each()和for循环哪个好些

Java基础Java 增强型的for循环 for each