首页 文章

对成员'filter' swift4的模糊引用

提问于
浏览
1

我有以下模型类的列表

struct CommonRes {
var month: String?
var monthName: String?
var year: String?
var classIdCount: String?
var groupName: String?
}
 var res = [CommonRes]()

在响应中,我收到了monthName的重复值 . 我想通过删除重复项来列出这些常见的monthName . 所以从this我尝试了以下内容

self.monthList = Array(Set(res.filter({ (i : CommonRes) in res.filter({ $0.monthName == i.monthName }).count > 1 })))

但我收到一个错误

对成员'过滤'的模糊引用

1 回答

  • 2

    你可以试试这个 .

    let monthList = Set(res.compactMap( {$0.monthName} )).sorted()
    

    如果要保留数据源的顺序,则可以使用 NSOrderedSet .

    let monthListOrdered = NSOrderedSet(array: res.compactMap( {$0.monthName})).array as! [String]
    

    但是,如果您希望月份按日期显示在日历上,则需要将它们排序为日期 .

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "MMM"
    let monthList = Set(res.compactMap( {$0.monthName}))
    let sortedMonthList = monthList.sorted(by: { dateFormatter.date(from: $0)! < dateFormatter.date(from: $1)! })
    

    Important Note: 已完成强制解包,因为从数据源中可以明显看出,您只会收到有效的月份 .

相关问题