How to convert swift-struct object name using swift-string

676 Views Asked by At

I have a struct name called Car. Car has two attributes(noOfTyres, ownerName).

struct Car {
    var noOfTyres: Int
    var ownerName: String
}

The string value is let objStr = "Car/ownerName"

how to convert the objStr to swiftObject like Car.ownerName?

2

There are 2 best solutions below

2
On

You can create struct object by below code:

struct Car {
    var noOfTyres: Int
    var ownerName: String
}
class Demo {
    func createStructObject() {
        var structData = [Car]()
        structData.append(Car(noOfTyres: 2, ownerName: "Innova"))
        let name = structData[0].ownerName
        print(name)
    }
}
0
On

you could try something like this:

let str = "Car/ownerName"
let obj = Car.toObj(str)
print("---> obj: \(obj)")   // --> optional "xxxx"

struct Car {
    var noOfTyres: Int
    static var ownerName: String = "xxxx"
    
    static func toObj(_ str: String) -> String? {
        if str.prefix(4) == "Car/" && str.dropFirst(4) == "ownerName" {
            return Car.ownerName  // <-- here
        } else {
            return nil
        }
    }
}