[英]SwiftUI Trying to find a value into an Array and save it into a Var
我有一个基于这个结构的数组:
struct Airports2: Identifiable, Codable, Hashable{
var AirportID: String = ""
var Icao: String = ""
var ApType: String = ""
var Name: String = ""
var Latitude: String = ""
var Longitude: String = ""
var Altitude: String = ""
var Continent: String = ""
var Country: String = ""
var Region: String = ""
var Municipality: String = ""
var Service: String = ""
var GpsCode: String = ""
var Iata: String = ""
var LocalCode: String = ""
var Link: String = ""
var wikiLink: String = ""
var Keyword: String = ""
let id = UUID()
}
我想创建一个 function 作为参数,它有一个对应于 ICAO 的字符串,并从 ICAO 找到机场纬度并仅将纬度保存在一个简单的 var 中并返回它。
我的 Airport 数组声明如下:
var FR_airportsDB = [Airports2]()
我的“搜索功能”是这样的:
func getApLat(ApName: String) -> Double{
let LAT: Double
var latFindString = FR_airportsDB.contains(Airports2.init(Icao: ApName))
LAT = Double(latFindString)!
return LAT
}
但这不起作用,我认为.contains
不是最好用的,但我不知道如何在结构化数组中进行搜索。
希望能清楚我的问题..
谢谢你的帮助
首先,请根据命名约定命名您的变量 lowerCamelCase 并以单数形式命名您的结构
var frAirportsDB = [Airport2]()
要搜索特定属性的值,请尝试获取数组where
该属性的值is equal
参数中的值的first
项。
您必须返回一个可选项,因为该项目可能不可用并且字符串无法转换为 Double
func getApLat(apName: String) -> Double? {
guard let foundAirport = frAirportsDB.first(where: {$0.Icao == apName}),
let lat = Double(foundAirport.Latitude) else { return nil }
return lat
}
并且请添加 CodingKeys 以将大写键转换为小写属性名称。 结构中的所有默认值都不是必需的。 即使没有,代码也可以编译。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.