我在該陣列中有一個類型爲Any
的陣列,它有兩種不同的類型,Person
和SportsMan
,它們都有一個名爲rank
的值。我想根據等級對陣列進行排序。以下是我怎麼今天做它和它的作品:任何基於變量的濾波器陣列
self.persons.sort {
let a = ($0 as AnyObject) as? Person
let b = ($0 as AnyObject) as? SportsMan
let l = a?.rank ?? b?.rank
let c = ($1 as AnyObject) as? Person
let d = ($1 as AnyObject) as? SportsMan
let r = c?.rank ?? d?.rank
return l! < r!
}
I'm感覺有點不確定,因爲在l! < r!
的!
的。這是解決這個問題的一個好方法,還是建立在此功能之上的?
更好的辦法:讓'Person'和'SportsMan'有一個共同的基類/協議具有'rank'屬性。那麼不要使用'[Any]'而是'[YourBaseClass]'。 – luk2302
你爲什麼通過'AnyObject'投射?如果'Person'和'SportsMan'具有共同的功能 - 使用協議(並且擁有該協議的陣列)。 – Hamish
@ luk2302我會繼續說你所說的,一個協議肯定會起作用。 – gwinyai