Предположим, что ваши объекты определены следующим образом:
struct MyObject {
let firstString: String
let firstDouble: Double
let secondString: String
let secondDouble: Double
}
Давайте определим три объекта:
let firstObject = MyObject(firstString: "uno",
firstDouble: 1,
secondString: "un",
secondDouble: 11)
let secondObject = MyObject(firstString: "dos",
firstDouble: 2,
secondString: "deux",
secondDouble: 22)
let thirdObject = MyObject(firstString: "uno",
firstDouble: 3,
secondString: "deux",
secondDouble: 33)
И поместим их в массив:
let myArray: [MyObject] = [firstObject, secondObject, thirdObject]
Вы можете получить первый элемент со свойством firstString
, равным "uno"
, используя first(where:)
:
let firstUno: (Int, MyObject)? = myArray
.enumerated()
.first(where: { $0.1.firstString == "uno"})
if let uno = firstUno {
print("First uno index =", uno.0) //First uno index = 0
print("First uno object =", uno.1) //First uno object = MyObject(firstString: "uno", firstDouble: 1.0, secondString: "un", secondDouble: 11.0)
}
Вы можете сделать то же самое, чтобы получить первый объектсвойство secondString
которого равно "deux"
:
let firstDeux: (Int, MyObject)? = myArray
.enumerated()
.first(where: { $0.1.secondString == "deux"})
if let deux = firstDeux {
print("First deux index =", deux.0) //First deux index = 1
print("First deux object =", deux.1) //First deux object = MyObject(firstString: "dos", firstDouble: 2.0, secondString: "deux", secondDouble: 22.0)
}