如何在swift中将元素类型转换为字符串?

时间:2015-09-04 08:38:57

标签: swift dictionary

我想得到一把钥匙:来自这样的词典的价值

var tmpDict = ["a":"1", "b":"2", "c":"3"]
var tmpString = "a1234"
print(tmpDict[tmpString.characters.first])

出现错误,比如tmpString.characters.first无法转换为字符串,如果我想调用tmpDict [xxx],我该怎么办?“xxx”表示tmpString的第一个字符。

2 个答案:

答案 0 :(得分:0)

您可以使用:

var tmpDict = ["a":"1", "b":"2", "c":"3"]
var tmpString = "a1234"
tmpDict[String(tmpString[tmpString.characters.startIndex])]

使用tmpString.characters.startIndex获取tmpString的第一个字符的索引,然后使用它来提取第一个字符,最后将此字符转换为字符串以访问字典。

答案 1 :(得分:0)

另一种方法是将tmpString转换为Array并以这种方式访问​​它的第一个元素:

tmpDict[String(Array(tmpString)[0])]  // "1"

或者你可以使用这个扩展名:

extension String
{
    subscript(integerIndex: Int) -> Character
        {
            let index = advance(startIndex, integerIndex)
            return self[index]
    }

    subscript(integerRange: Range<Int>) -> String
        {
            let start = advance(startIndex, integerRange.startIndex)
            let end = advance(startIndex, integerRange.endIndex)
            let range = start..<end
            return self[range]
    }
}

var tmpDict = ["a":"1", "b":"2", "c":"3"]
var tmpString = "a1234"
print(tmpDict[String(tmpString[0])]!)  // "1"

2.0

extension String
{
    subscript(integerIndex: Int) -> Character {
        let index = startIndex.advancedBy(integerIndex)
        return self[index]
    }

    subscript(integerRange: Range<Int>) -> String {
        let start = startIndex.advancedBy(integerRange.startIndex)
        let end = startIndex.advancedBy(integerRange.endIndex)
        let range = start..<end
        return self[range]
    }
}