如何从string.index获取和Int?

时间:2018-06-04 06:33:18

标签: swift xcode cocoa

swift 4.1,xcode 9.3,cocoa App

如何从string.index获取Int以与其他属性编号一起使用?

@IBOutlet weak var inputFromTextField: NSTextField!
@IBAction func button(_ sender: NSButton) {
    let temporaryHolder = inputFromTextField.stringValue.characters
    for input in temporaryHolder {
        let distance = temporaryHolder.index(of: input)
        print(input)
        print(distance + 100)
}

错误代码:

  

二进制运算符'+'不能应用于类型的操作数   “String._CharacterView.Index? (又名'Optional< String.Index>')和   'INT'

1 个答案:

答案 0 :(得分:1)

您可以使用distance(from:to:)来计算(整数)距离 从String.Index到字符串的开始位置:

let str = "abab"
for char in str {
    if let idx = str.index(of: char) {
        let distance = str.distance(from: str.startIndex, to: idx)
        print(char, distance)
    }
}

但请注意index(of:)会返回该字符的第一个索引 在字符串中,所以上面的代码将打印

a 0
b 1
a 0
b 1

如果您打算将字符串中的每个字符与运行偏移量一起使用,请使用enumerated()

for (distance, char) in str.enumerated() {
    print(char, distance)
}

这将打印

a 0
b 1
a 2
b 3