我正在寻找一个函数来获取结构化数组的一个元素的所有信息。因为我想在许多数组(相同类型)和该数组的许多元素上执行此操作,所以我想执行一个函数,该函数接受参数数组的名称和我想要工作的数组的元素。
我的数组示例:
class FlightLibrary: ObservableObject{
@Published var testFlight = [
Flight(seTime: "00:20", meTime: "", nightTime: "", ifrTime: "", captainTime: "00:20", copilotTime: "", dualTime: ""),
Flight(seTime: "00:40", meTime: "00:20", nightTime: "", ifrTime: "", captainTime: "00:20", copilotTime: "", dualTime: ""),
Flight(seTime: "00:35", meTime: "", nightTime: "00:20", ifrTime: "", captainTime: "00:20", copilotTime: "", dualTime: "")
]
}
以及我对我的职能的尝试:
func GetSpecificTotalTime(inArray: Array<Flight>, ofTime: Array<Flight>.Element) -> String{
var specificTotalTime: String = ""
var specificTimeInt: Int = 0
for i in inArray{
let stringValueToAdd: String = i.oftime
}
return specificTotalTime
}
这里有我的函数,例如,我想在元素
testFlight
上的数组 .seTime
中工作。所以我会有类似的东西:
GetSpecificTotalTime(inArray: testFlight, ofTime: seTime)
但是在我的函数中,
let stringValueToAdd: String = i.oftime
行不起作用。
在这里,我想通过 stringValueToAdd
上的值来填充 enteredArray[i].enteredElement
,并在使用该值后,然后再转到下一个索引。
我怎样才能做到这一点?
第二个参数不是数组。
Array<Flight>.Element
只是一个 Flight
。
例如,一种可能的方法是将关键路径指定为第二个参数
func getSpecificTotalTime(inArray: Array<Flight>, ofTime: KeyPath<Flight,String>) -> String {
然后你可以使用
获取任何字符串属性for i in inArray{
let stringValueToAdd: String = i[keyPath: ofTime]
}
并调用它
getSpecificTotalTime(inArray: testFlight, ofTime: \.seTime)
我们可以借助下标语法使用数组索引来访问元素。在下标语法中,我们在方括号内使用元素(我们想要访问的)的索引,就在数组名称之后。
数组名称[索引号]