Swift, use string name to reference a variable

前端 未结 2 1576
自闭症患者
自闭症患者 2020-12-06 16:03

Plan to use a string value to for referencing which variable I want to update. Combining string from a few different user selected sources. To many possibilities to use if

相关标签:
2条回答
  • 2020-12-06 16:14

    How about using a dictionary, [String : Int]?

    This will allow you to achieve what you want - storing values for different keys.

    For example, instead of using

    var d1000 = 0
    var d1289 = 0
    var d1999 = 0
    

    You could use

    var dictionary: [String : Int] = [
      "d1000" : 0,
      "d1289" : 0,
      "d1999" : 0
    ]
    

    To store a value in the dictionary, just use

    dictionary[key] = value
    //for example, setting "d1289" to 1234
    dictionary["d1289"] = 1234
    

    and to get the value from the dictionary, use

    let value = dictionary[key]
    //for example, getting the value of "d1289"
    let value = dictionary["d1289"]
    

    So, you could use something like this

    //initialize your dictionary
    var myDictionary: [String : Int] = [:]
    
    //your key initialization data
    var deviceIDtype: Character = "d"
    var deviceIDsection: String = "12"
    var deviceID: String = "89"
    var ref: String = ""
    
    //your code
    func devName(/*...*/){/*...*/}
    ref = devName(/*...*/)
    
    //set the key ref (fetched from devName) to 1234
    myDictionary[ref] = 1234
    

    Just as a side note, you could really clean some of your code

    func devName(type: Character, section: String, id: String) -> String{      
        return String(type) + section + id
    }
    
    //...
    
    let key = devName(deviceIDtype, section: deviceIDsection, id: deviceID)
    let value = 1234
    myDictionary[key] = value
    
    0 讨论(0)
  • 2020-12-06 16:18

    It is possible!!!

    let index = 1000
    if let d1000 = self.value(forKey: "d\(index)") as? Int {
        // enjoy
    }
    
    0 讨论(0)
提交回复
热议问题