Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save lawreyios/0804ac3226b419569b197aaa74976290 to your computer and use it in GitHub Desktop.
Save lawreyios/0804ac3226b419569b197aaa74976290 to your computer and use it in GitHub Desktop.
//: Playground for : https://medium.com/@lawrey/swiftytutorial-map-properties-of-2-arrays-9da34c5e279d
import Foundation
enum CardType {
case debit
case credit
}
struct Bank {
var code: Int
var name: String
}
struct PaymentMethod {
var bankCode: Int
var bankName: String?
var endingNumber: String
var cardType: CardType
}
var banks: [Bank]?
banks = [
Bank(code: 11, name: "DBS"),
Bank(code: 22, name: "HSBC"),
Bank(code: 33, name: "OCBC"),
Bank(code: 44, name: "SC")
]
var paymentMethod1 = PaymentMethod(bankCode: 11, bankName: nil, endingNumber: "1111", cardType: .debit)
var paymentMethod2 = PaymentMethod(bankCode: 22, bankName: nil, endingNumber: "2222", cardType: .debit)
var paymentMethod3 = PaymentMethod(bankCode: 33, bankName: nil, endingNumber: "3333", cardType: .credit)
var paymentMethod4 = PaymentMethod(bankCode: 44, bankName: nil, endingNumber: "4444", cardType: .credit)
var paymentMethods = [
paymentMethod1,
paymentMethod2,
paymentMethod3,
paymentMethod4,
]
let mappedPaymentMethods = paymentMethods.map { paymentMethod -> PaymentMethod in
guard let banks = banks else {
return paymentMethod
}
var mutablePaymentMethod = paymentMethod
if let bank = banks.filter( { $0.code == paymentMethod.bankCode } ).first {
mutablePaymentMethod.bankName = bank.name
}
return mutablePaymentMethod
}
mappedPaymentMethods.forEach { (method: PaymentMethod) in print(method) }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment