2017-10-04 58 views
2

例如,我具有以下類:索引的元素的

class Person: Any { 
    dynamic var name: String = "" 
    dynamic var surname: String = "" 
} 

此外,我具有以下陣列「人」類的實例:

let person1 = Person(); person1.name = "John"; person1.surname = "Smith" 
let person2 = Person(); person2.name = "Ivan"; person2.surname = "Ivanov" 
let person3 = Person(); person3.name = "Sam"; person3.surname = "Woodman" 
let personList = [person1, person2, person3] 

是否有一個的方式以某種方式獲得所有約翰斯的指標?

+2

無關,但是從'Any'是沒有意義的,因爲在斯威夫特所有類型可以表示爲'Any'和'Any'是不是一個真正的類,因此沒有任何優勢來與它繼承繼承。此外,爲什麼動態關鍵字,你使用Realm?如果你這樣做了,你應該提供一個真正的代碼提取,而不是一個虛擬的代碼,用繼承從Object來代替Any。 –

回答

5

您可以將flatMap作爲枚舉列表的人列表返回匹配的偏移量。

let indexes = personList.enumerated().flatMap { $1.name == "John" ? $0 : nil } 

否則,你可以通過一個簡單的for循環來實現這一點。

var indexes = [Int]() 

for index in personList.indices { 
    if personList[index].name == "John" { 
     indexes.append(index) 
    } 
} 

print(indexes)