簡體   English   中英

SwiftUI 嘗試在數組中查找值並將其保存到 Var

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM