I am trying to build a table of current locale properties in code, and have encountered issues with trying to pass the value of a variable to a function:
let currentLocale = Locale(identifier: "en_US") let calendar1 = currentLocale.calendar // "gregorian (fixed)" let propertyName = "calendar" let calendar2 = currentLocale.propertyName // Error: Value of type 'Locale' has no member 'porpertyName' In the last line of code above, the instance of Locale thinks I am passing it "propertyName" rather than the contents of the variable "calendar". Is there any way to pass the value of propertyName ("calendar") to the instance of Locale? I know that in other languages, you can prepend the variable name like '$propertyName', and that tells it to read the value of the variable. I want to keep this pure Swift if possible. I posted this question on StackOverflow, and got the following that does work: let calendar2 = (currentLocale as NSLocale).object(forKey:NSLocale.Key(rawValue:propertyName)) It does seem odd to me that we must do some crazy Objective-C gymnastics to make it work. It would seem logical to have a computed property on the Any type named, let's say, contentsOf that would return or pass the contents of the variable to the called function. For example, to use the original code sample above, we could use: let calendar2 = currentLocale.propertyName.contentsOf or something similar. Thus currentLocale.propertyName would pass the literal "propertyName", whereas currentLocale.propertyName.contentsOf would pass the contents "calendar". Does anyone else agree that we need this functionality, or am I way out in left field on this? Or is this already possible and I haven't yet figured it out? Sincerest Regards, Michael Michael Sheaver mshea...@me.com
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users