如何将其分成 3 种方法.. thisYear、thisMonth 和 pastYear?
how to separate this into 3 methods.. the thisYear, thisMonth, and pastYear?
我想创建一个方法来分隔 thisYear、pastYear 和 thisMonth..
如何创建一个方法来分离。谢谢。
func viewWillAppear(view: UIViewController) {
totalRevenueThisCycleWorker.fetchAllRevenueList { (result) in
switch result {
case .success(let listRevenues):
//thisYear
let revenues = listRevenues.filter({ (domain) -> Bool in
return domain.year == Date().year })
var thisYearRevenueList: [Double] = []
for totalThisYear in revenues {
thisYearRevenueList.append(totalThisYear.revenue)
}
let totalRevenuesThisYear = thisYearRevenueList.reduce(0, +)
let doubleRevenuesThisYear = Double(String(format: "%.2f", totalRevenuesThisYear))
print("Total Revenues of Current Year \(doubleRevenuesThisYear ?? 0) ")
//thisMonth
let months: [String] = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
var highestValue = listRevenues.max { x, y in x.month > y.month }
let month = months[highestValue!.month + 1]
print("COUNTED \(month) ")
let monthRevenues = listRevenues.filter({ (domain) -> Bool in
return domain.month == highestValue?.month })
var monthRevenueList: [Double] = []
for totalMonth in monthRevenues {
monthRevenueList.append(Double(totalMonth.revenue))
}
let totalRevenuesMonth = monthRevenueList.reduce(0 , +)
let doubleRevenuesMonth = Double(String(format: "%.2f", totalRevenuesMonth))
print("Total Revenues of Latest Month in Current Year \(doubleRevenuesMonth ?? 0) ")
//pastYear
let pastRevenues = listRevenues.filter({ (domain) -> Bool in
return domain.year == Date().year - 1 })
var pastYearRevenueList: [Double] = []
for totalPastYear in pastRevenues {
pastYearRevenueList.append(totalPastYear.revenue)
}
let totalRevenuesPastYear = pastYearRevenueList.reduce(0, +)
print("Total Revenues of Past Year \(totalRevenuesPastYear) ")
let item = TotalRevenueModel(thisYearTotalRevenue: doubleRevenuesThisYear ?? 0, pastYearTotalRevenue: totalRevenuesPastYear, thisMonthTotalRevenue: doubleRevenuesMonth ?? 0, thisYearMonth: month)
output?.showRevenues(amounting: item)
case .failure(_): break
}
}
}
我想创建一个方法来分隔 thisYear、pastYear 和 thisMonth..
如何创建一个方法来分离。谢谢。
您可以将代码分解成 3 种方法 thisYear(listRevenues:
), thisMonth(listRevenues)
, pastYear(listRevenues:)
func thisYear(listRevenues: [Revenue]) {
let revenues = listRevenues.filter { [=10=].year == Date().year }
let thisYearRevenueList = revenues.map{ [=10=].revenue }
let totalRevenuesThisYear = thisYearRevenueList.reduce(0, +)
let doubleRevenuesThisYear = Double(String(format: "%.2f", totalRevenuesThisYear))
print("Total Revenues of Current Year \(doubleRevenuesThisYear ?? 0) ")
}
func thisMonth(listRevenues: [Revenue]) {
let months: [String] = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
if let highestValue = listRevenues.max({ [=10=].month > .month }) {
let month = months[highestValue.month + 1]
print("COUNTED \(month) ")
let monthRevenues = listRevenues.filter { [=10=].month == highestValue.month }
let monthRevenueList: [Double] = monthRevenues.map { Double([=10=].revenue) }
let totalRevenuesMonth = monthRevenueList.reduce(0 , +)
let doubleRevenuesMonth = Double(String(format: "%.2f", totalRevenuesMonth))
print("Total Revenues of Latest Month in Current Year \(doubleRevenuesMonth ?? 0) ")
}
}
func pastYear(listRevenues: [Revenue]) {
let pastRevenues = listRevenues.filter { [=10=].year == Date().year - 1 }
var pastYearRevenueList = pastRevenues.map { [=10=].revenue }
let totalRevenuesPastYear = pastYearRevenueList.reduce(0, +)
print("Total Revenues of Past Year \(totalRevenuesPastYear) ")
let item = TotalRevenueModel(thisYearTotalRevenue: doubleRevenuesThisYear ?? 0, pastYearTotalRevenue: totalRevenuesPastYear, thisMonthTotalRevenue: doubleRevenuesMonth ?? 0, thisYearMonth: month)
output?.showRevenues(amounting: item)
}
现在调用方法,
switch result {
case .success(let listRevenues):
self.thisYear(listRevenues: listRevenues) //thisYear
self.thisMonth(listRevenues: listRevenues) //thisMonth
self.pastYear(listRevenues: listRevenues) //pastYear
case .failure(_): break
}
修改代码为自己的数据类型,即将Revenue
替换为listRevenues
的类型。
注意:避免在不必要的情况下使用force-unwrapping(!
)。
我想创建一个方法来分隔 thisYear、pastYear 和 thisMonth.. 如何创建一个方法来分离。谢谢。
func viewWillAppear(view: UIViewController) {
totalRevenueThisCycleWorker.fetchAllRevenueList { (result) in
switch result {
case .success(let listRevenues):
//thisYear
let revenues = listRevenues.filter({ (domain) -> Bool in
return domain.year == Date().year })
var thisYearRevenueList: [Double] = []
for totalThisYear in revenues {
thisYearRevenueList.append(totalThisYear.revenue)
}
let totalRevenuesThisYear = thisYearRevenueList.reduce(0, +)
let doubleRevenuesThisYear = Double(String(format: "%.2f", totalRevenuesThisYear))
print("Total Revenues of Current Year \(doubleRevenuesThisYear ?? 0) ")
//thisMonth
let months: [String] = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
var highestValue = listRevenues.max { x, y in x.month > y.month }
let month = months[highestValue!.month + 1]
print("COUNTED \(month) ")
let monthRevenues = listRevenues.filter({ (domain) -> Bool in
return domain.month == highestValue?.month })
var monthRevenueList: [Double] = []
for totalMonth in monthRevenues {
monthRevenueList.append(Double(totalMonth.revenue))
}
let totalRevenuesMonth = monthRevenueList.reduce(0 , +)
let doubleRevenuesMonth = Double(String(format: "%.2f", totalRevenuesMonth))
print("Total Revenues of Latest Month in Current Year \(doubleRevenuesMonth ?? 0) ")
//pastYear
let pastRevenues = listRevenues.filter({ (domain) -> Bool in
return domain.year == Date().year - 1 })
var pastYearRevenueList: [Double] = []
for totalPastYear in pastRevenues {
pastYearRevenueList.append(totalPastYear.revenue)
}
let totalRevenuesPastYear = pastYearRevenueList.reduce(0, +)
print("Total Revenues of Past Year \(totalRevenuesPastYear) ")
let item = TotalRevenueModel(thisYearTotalRevenue: doubleRevenuesThisYear ?? 0, pastYearTotalRevenue: totalRevenuesPastYear, thisMonthTotalRevenue: doubleRevenuesMonth ?? 0, thisYearMonth: month)
output?.showRevenues(amounting: item)
case .failure(_): break
}
}
}
我想创建一个方法来分隔 thisYear、pastYear 和 thisMonth.. 如何创建一个方法来分离。谢谢。
您可以将代码分解成 3 种方法 thisYear(listRevenues:
), thisMonth(listRevenues)
, pastYear(listRevenues:)
func thisYear(listRevenues: [Revenue]) {
let revenues = listRevenues.filter { [=10=].year == Date().year }
let thisYearRevenueList = revenues.map{ [=10=].revenue }
let totalRevenuesThisYear = thisYearRevenueList.reduce(0, +)
let doubleRevenuesThisYear = Double(String(format: "%.2f", totalRevenuesThisYear))
print("Total Revenues of Current Year \(doubleRevenuesThisYear ?? 0) ")
}
func thisMonth(listRevenues: [Revenue]) {
let months: [String] = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
if let highestValue = listRevenues.max({ [=10=].month > .month }) {
let month = months[highestValue.month + 1]
print("COUNTED \(month) ")
let monthRevenues = listRevenues.filter { [=10=].month == highestValue.month }
let monthRevenueList: [Double] = monthRevenues.map { Double([=10=].revenue) }
let totalRevenuesMonth = monthRevenueList.reduce(0 , +)
let doubleRevenuesMonth = Double(String(format: "%.2f", totalRevenuesMonth))
print("Total Revenues of Latest Month in Current Year \(doubleRevenuesMonth ?? 0) ")
}
}
func pastYear(listRevenues: [Revenue]) {
let pastRevenues = listRevenues.filter { [=10=].year == Date().year - 1 }
var pastYearRevenueList = pastRevenues.map { [=10=].revenue }
let totalRevenuesPastYear = pastYearRevenueList.reduce(0, +)
print("Total Revenues of Past Year \(totalRevenuesPastYear) ")
let item = TotalRevenueModel(thisYearTotalRevenue: doubleRevenuesThisYear ?? 0, pastYearTotalRevenue: totalRevenuesPastYear, thisMonthTotalRevenue: doubleRevenuesMonth ?? 0, thisYearMonth: month)
output?.showRevenues(amounting: item)
}
现在调用方法,
switch result {
case .success(let listRevenues):
self.thisYear(listRevenues: listRevenues) //thisYear
self.thisMonth(listRevenues: listRevenues) //thisMonth
self.pastYear(listRevenues: listRevenues) //pastYear
case .failure(_): break
}
修改代码为自己的数据类型,即将Revenue
替换为listRevenues
的类型。
注意:避免在不必要的情况下使用force-unwrapping(!
)。