当带有过滤器选项的 ForEach 在 Swiftui 中没有显示结果时,如何显示文本?

Posted

技术标签:

【中文标题】当带有过滤器选项的 ForEach 在 Swiftui 中没有显示结果时,如何显示文本?【英文标题】:How to show a text when ForEach with a filter option shows no result in Swiftui? 【发布时间】:2020-07-16 21:26:39 【问题描述】:

我正在尝试解决以下问题。我创建了一个带有 ForEach 循环的“列表看起来像”列表。哪个工作得很好,只是不能解决一个问题。在最后一个 ForEach 循环中,如果数据库“值”中没有结果,我想以文本形式给出结果。因此,如果 ForEach 循环因为没有设置数据库而没有通过,那么我想给出一个 Text 结果,显示“0€”。

你有什么想法吗?

代码如下:

ForEach(categories.filter( (categories) -> Bool in
          categories.inOrOutCategory_ID == 1 ), id: \.category_ID)  categoryIndex in
            Section(header: Text("\(categoryIndex.category)")) 
              ForEach(subCategories.filter( (subCategories) -> Bool in
                subCategories.category_ID == categoryIndex.category_ID ), id: \.subCategory_ID) 
                  subCategoryIndex in
                  HStack 
                    Text("\(subCategoryIndex.subCategory)").padding(.leading)
                    Spacer()
                    ForEach(values.filter( (values) -> Bool in
                      values.subCategory_ID == subCategoryIndex.subCategory_ID && (values.month_ID == self.month && (values.year == self.year)) ), id: \.value_ID)  valueIndex in
                        
                        Text("\(String(format: "%.2f", valueIndex.value))€").padding(.trailing)
                    
                  
              
            
        .padding(.leading)

非常感谢

【问题讨论】:

【参考方案1】:

我今天遇到了同样的问题,解决方案是创建一个方法,该方法为真或假,手动检查过滤器的条件,然后有必要在 swiftUI 中创建视图,如果方法返回,则显示该视图例如,假(无结果),在您的视图中,您显示文本或任何您想要的内容,但没有结果

示例:

func searchResult() -> Bool 
    if searchText == "" 
        return true // ne s'affiche pas
    
    for u in subscribers
        if u.firstname.contains(searchText)
             return true
        
        if u.lastname.contains(searchText)
            return true
        
    
    return false // s'affiche

在你看来:

                if !searchResult() 
                    Text("test")
                

【讨论】:

以上是关于当带有过滤器选项的 ForEach 在 Swiftui 中没有显示结果时,如何显示文本?的主要内容,如果未能解决你的问题,请参考以下文章

当用户使用 swift 的核心数据点击索引 0 到 1 时,如何显示不同的照片过滤器选项?

带有全选选项的 swift 3.0 多项选择

带有引导程序的 JavaScript 表过滤器

在 iOS/swift 中上传图像时如何删除裁剪选项

过滤后的 didSelectRowAtIndexPath 索引路径 UISearchController - Swift

带有多个 sortDescriptor 和 Bool 过滤器的 Swift fetchRequest