0

I am new to swift and I am trying to find out, how to access the structure attribute through a variable. Being a JS developer, we are able to access the object key through a variable, so I am trying to find out if swift is also able to do the same?

//example in javascript
const someArray = [
   {key1: "value 1"},
]

const getValue1 = (key) => {
   return someArray[0][key]
}

//will return "value 1" 
getValue1(key1) 

so likewise, for swift I am trying to access the attribute within a dictionary of structure items. Story has been initiated as a struct.

let stories = [
  Story(
            title: "Some Title",
            choice1: "Choice 1",
            choice2: "Choice 2",
        )
]

 func getChoiceText(choice: String) -> String {
   // get the choice string based on choice parameter -> "choice1" || "choice2"
   // eg something like this -> return stories[0][choice] 
 }

// so that I can get the corresponding choice text by calling the function 
getChoiceText(choice: "choice1")

thank you for your help in advance!! :)

1 Answer 1

1

The closest equivalent in Swift is a generic function passing a key path

func getValue<T>(path: KeyPath<Story,T>) -> T {
    return stories[0][keyPath: path]
}

and call it

getValue(path: \.choice1)

But be aware that the code crashes if stories is empty.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.