SwiftUi 创建以数组为参数且元素为数组类型的函数

问题描述 投票:0回答:2

我正在寻找一个函数来获取结构化数组的一个元素的所有信息。因为我想在许多数组(相同类型)和该数组的许多元素上执行此操作,所以我想执行一个函数,该函数接受参数数组的名称和我想要工作的数组的元素。

我的数组示例:

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
,并在使用该值后,然后再转到下一个索引。

我怎样才能做到这一点?

arrays function swiftui parameters element
2个回答
0
投票

第二个参数不是数组。

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)

0
投票

我们可以借助下标语法使用数组索引来访问元素。在下标语法中,我们在方括号内使用元素(我们想要访问的)的索引,就在数组名称之后。

数组名称[索引号]

© www.soinside.com 2019 - 2024. All rights reserved.