[英]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.