筛选数组以填充列表



我有一个ObservableObject与我的数据模型,由以下结构体组成:

struct Task: Codable, Hashable, Identifiable {
var id = UUID()
var title: String
var completed = false
var priority = 2
}

一个简单的结构体,在我的应用程序中的待办事项列表。

在负责构建按优先级显示的任务列表的视图中,我希望通过每个元素的priority过滤该数据模型,并将其显示在列表中。

我对swift还是个新手,但在谷歌上搜索了一下(并特别尝试了一下)之后,我尝试了:

struct TasksView: View {

@EnvironmentObject private var taskdata: DataModel
@State var byPriotity: Int

// this of course fails. 
let filtered = taskdata.tasks.filter { priority in
return taskdata.$tasks.priority = byPriotity        
}

var body: some View {
//...
}
}

这个想法是传递filtered到列表,并有显示在视图上。如果用户选择不同的按钮,然后重复、筛选新的优先级和显示。

如何按优先级过滤@EnvironmentObject private var taskdata: DataModel?

谢谢。

我可能会在DataModel上设置这个函数,而不是在View上尝试这样做:

class DataModel : ObservableObject {
@Published var tasks : [Task] = []

func filteredTasks(byPriority priority: Int) -> [Task] {
tasks.filter { $0.priority == priority }
}
}

然后在View中,可以这样使用:

var body : some View {
ForEach(taskdata.filteredTasks(byPriority: byPriority)) { task in 
//...
}
}

如果你真的想把它放在View上,你可以这样做:

var filteredTasks: [Task] {
taskdata.tasks.filter { $0.priority == byPriotity }
}

相关内容

  • 没有找到相关文章

最新更新