NinjaDeveloper NinjaDeveloper - 1 month ago 7
iOS Question

How to gGet key value pair tuple array in swift?

I have pairs tuple array pickerDataVisitLocation.just I want to know how to return key value pair location from my array using uniqId ex 204

var pickerDataVisitLocation:[(uniqId:Int,location:String)] = [(203,"Home"),(204,"Hospital"),(205,"Other")]
var selectedIndex = pickerDataVisitLocation[1].uniqId
pickerDataVisitLocation[selectedIndex].location //<--fatal error: Index out of range

Answer

You could make use of Sequence's first(where:) to access the first tuple element of the array that meets a boolean requirement based on the first member of the tuple elements (uniqId). For the resulting tuple element, simply access the second member of the tuple (location).

var pickerDataVisitLocation: [(uniqId: Int, location: String)] = 
    [(203, "Home"), (204, "Hospital"), (205, "Other")]

// say for a given uniqId 204
let givenId = 204
let location = pickerDataVisitLocation
               .first{ $0.uniqId == givenId }?.location ?? ""
print(location) // Hospital

If no tuple element can be found for a given id, the method above will result in a resulting string that is empty (due to the nil coalescing operator). As an alternative, you could use an optional binding clause to proceed only for a non-nil return from .first:

var pickerDataVisitLocation: [(uniqId:Int,location:String)] = [(203,"Home"),(204,"Hospital"),(205,"Other")]

// say for a given uniqId 204
let givenId = 204
if let location = pickerDataVisitLocation
                  .first(where: { $0.uniqId == givenId })?.location {
    print(location) // Hospital
}