SwiftUI - 在 SwiftUI 中对显示的 JSON 文件进行排序,分节或排序

Posted

技术标签:

【中文标题】SwiftUI - 在 SwiftUI 中对显示的 JSON 文件进行排序,分节或排序【英文标题】:SwiftUI - Sort a display a JSON file in SwiftUI with sections, either in sections or sorted 【发布时间】:2020-03-13 10:47:02 【问题描述】:

我有一个 JSON 文件,内容如下:

[

   "id":"s1",
   "group":"Fruits",
   "items":[
      
         "id":1,
         "name":"Apple"
      ,
      
         "id":2,
         "name":"Pineapple"
      ,
   ]
,

   "id":"s2",
   "group":"Vegetables",
   "items":[
      
         "id":3,
         "name":"Carots"
      ,
      
         "id":4,
         "name":"Cucumber"
      
   ]
,
]

我想给用户两个选择:

在他们的组中显示他们的部分 显示所有分类的蔬菜和水果

这里是两个代码sn-ps和结果:

// sorted in sections
List 
        ForEach(itemData)  section in
            Section(header: Text(section.group)) 
                ForEach(section.items)  item in
                    ItemRow(item: item)
                
            
        
    

结果按预期按部分排序:

水果

苹果 菠萝

蔬菜

胡萝卜

黄瓜

// items without sections
List 
    ForEach(itemData)  section in
        ForEach(section.items)  item in
            ItemRow(item: item)
        
    

结果如预期未排序:

苹果 菠萝 胡萝卜 黄瓜

如何按“名称”对第二个选项进行排序和显示?

【问题讨论】:

【参考方案1】:

试试这个:(我不知道你是怎么称呼你的变量的,所以我把它叫做“name”。用你的变量名替换它)

List 
            ForEach(itemData.sorted  $0.name < $1.name )  section in
                Section(header: Text(section.group)) 
                    ForEach(section.items.sorted  $0.name < $1.name )  item in
                        ItemRow(item: item)
                    
                
            
        

【讨论】:

以上是关于SwiftUI - 在 SwiftUI 中对显示的 JSON 文件进行排序,分节或排序的主要内容,如果未能解决你的问题,请参考以下文章

在 SwiftUI 中对形状进行分组

如何在 SwiftUI 中对列表中的值求和?

我可以在 SwiftUI 中对所有共享数据使用 @EnvironmentObject 吗?

SwiftUI 中对成员“索引”的错误引用不明确

更改 SwiftUI 文本 .timer 格式

如何在 SwiftUI 中汇总过滤的核心数据?