Swift 如何从名称相似的变量中获取值

Swift 如何从名称相似的变量中获取值,swift,Swift,已定义顺序变量名。我想得到一个相对于相应值的变量 var code = 2 // 5, 6, ... // corresponding values var name : String var name1 : String = "Aaaaaa" var name2 : String = "Bbbbbb" // var name3 // var name4 ... name = "name" + String(code) // name =

已定义顺序变量名。我想得到一个相对于相应值的变量

 var code = 2 // 5, 6, ... // corresponding values
    var name : String

    var name1 : String = "Aaaaaa"
    var name2 : String = "Bbbbbb"
    // var name3
    // var name4 ...

    name = "name" + String(code)  // name = "Bbbbb" ??
我没有得到我想要的结果。
我希望我的解释是正确的。感谢您的帮助。

与Objective-C不同,您不能通过Swift中变量名称的
字符串来访问变量。在您的情况下,您可能只需要使用一个数组:

var code = 2 // 5, 6, ... // corresponding values
var names = ["Aaaaaa", "Bbbbbb"]
var name = names[code - 1] // "Bbbbbb"
如果您真的想从字符串名动态执行此操作,则必须连接到Objective-C,例如:

class SomeObject: NSObject {
    var name1 : String = "Aaaaaa"
    var name2 : String = "Bbbbbb"

    func getName(code: Int) -> String {
        let name = valueForKey("name" + String(code)) as! String  // "Bbbbbb"
        return name
    }
}

SomeObject().getName(2) // "Bbbbbb"

当然,这样做会失去Swift提供的许多安全性。

与Objective-C不同,Swift中的变量名称不能通过
字符串访问。在您的情况下,您可能只需要使用一个数组:

var code = 2 // 5, 6, ... // corresponding values
var names = ["Aaaaaa", "Bbbbbb"]
var name = names[code - 1] // "Bbbbbb"
如果您真的想从字符串名动态执行此操作,则必须连接到Objective-C,例如:

class SomeObject: NSObject {
    var name1 : String = "Aaaaaa"
    var name2 : String = "Bbbbbb"

    func getName(code: Int) -> String {
        let name = valueForKey("name" + String(code)) as! String  // "Bbbbbb"
        return name
    }
}

SomeObject().getName(2) // "Bbbbbb"

当然,这样做会失去Swift提供的许多安全性。

这就是数组的作用。这就是数组的作用。@Eric据我所知,OP希望在给定运行时代码的情况下访问不同的命名属性。为此,上述与
NSObject
的一致性以及随后对
self.valueForKey
的使用是唯一的选择。然而,正如在这个答案中所指出的,我们使用这种方法完全让Swifts享有了著名的类型安全性。@Aaron Brager,你太棒了!:)非常感谢你。很好。希望不是安全问题。因为我对安全一无所知。再次感谢。@Mahmut举个例子说明为什么这是不安全的,请尝试将
name2
设置为
字符串以外的任何内容-例如,
1234
nil
@Aaron Brager,是的,我明白了。我采取了必要的预防措施。谢谢。根据(这可能是一个重复的问题),您可以通过名称字符串获得Swift变量值。不容易,不优雅,也许。。。但这是可能的。@EricD据我所知,OP希望在给定运行时代码的情况下访问不同的命名属性。为此,上述与
NSObject
的一致性以及随后对
self.valueForKey
的使用是唯一的选择。然而,正如在这个答案中所指出的,我们使用这种方法完全让Swifts享有了著名的类型安全性。@Aaron Brager,你太棒了!:)非常感谢你。很好。希望不是安全问题。因为我对安全一无所知。再次感谢。@Mahmut举个例子说明为什么这是不安全的,请尝试将
name2
设置为
字符串以外的任何内容-例如,
1234
nil
@Aaron Brager,是的,我明白了。我采取了必要的预防措施。谢谢。根据(这可能是一个重复的问题),您可以通过名称字符串获得Swift变量值。不容易,不优雅,也许。。。但这是可能的。