class TrackingItem : ObservableObject, Identifiable, Codable {
var id = UUID()
var trackingNumber: String?
}
struct ToMeTabResponse : Codable {
var shipments: [TrackingItem] = []
}
struct ObjectData : Codable {
var groups: [ToMeTabResponse] = []
}
struct BaseViewModel {
var objectList: [ObjectData] = []
var ignoreIds: [String] = ["AB","BC" ]
此函数filter
未返回预期结果。如果trackingNumber
在ignoreIds
中,则该对象不应在objectList
中。
func filter
objectList = objectList.filter { list in
list.groups.contains(where: {
$0.shipments.contains(where: {
!ignoreIds.contains($0.trackingNumber ?? "")
})
})
}
}
1条答案
按热度按时间yyhrrdl81#
如果您的目标是过滤掉任何
ObjectData
示例,该示例包含具有忽略ID的装运的任何组,则可以使用以下命令:allSatisfy
的使用确保所有条目满足期望的标准。因此,如果要忽略给定ObjectData
的所有组的所有装运中的单个TrackingItem
,则整个ObjectData
将从结果中过滤掉。如果您的目标是创建一个新的数据副本,只删除匹配的
TrackingItem
示例(以及空的发货和组),那么这就复杂得多了。filter(by:)
方法已添加到and
中,以使其更易于管理。以下项目可以在Swift Playground中运行。