2017-02-21 15 views
-2

我試圖通過搜索列表來查找最大值。這很容易,但如果我包括更多的選項來搜索最大值呢?如何在Swift 3中查找列表項(對象)的最大值?

有人知道如何使用日期等其他值進行搜索嗎?

我有這段代碼。

class Event { 
var date: Date? 
var amount: String? 

init(date: Date, amount: String){ 
    self.date = date 
    self.amount = amount 
} 
} 


var event: [Event] = [] 
let searchDate = Date() 

let max = event.max { $0.amount! < $1.amount! } 
max?.amount 

這不起作用正確

let max = event.max { $0.amount! < $1.amount! && $0.date == searchDate } 

感謝您的幫助

+4

「Searching」('filter')和「sorting」('max')是兩種不同的操作。 –

+3

*「這不正確」*是無用的問題描述。什麼是您的輸入數據,實際輸出和預期輸出是什麼? –

+0

我們使用tuple_cat的答案。感謝您的快速幫助 – testuser9999887

回答

1

這聽起來像你想searchDate過濾event,然後找到過濾結果的最大值。你可以這樣做:

let max = event.filter { $0.date == searchDate }.max { $0.amount! < $1.amount! } 
+0

這工作得很好!謝謝! – testuser9999887

1

在關閉你傳遞給max方法,你只應該排序值,而不是過濾它們。如果要過濾值,請先執行以下操作:

event.filter {$0.date == searchDate} .max {$0.amount! < $1.amount!} 
+0

工作得很好!謝謝! – testuser9999887

相關問題