不明确的引用:UITextField.text 错误 Swift 3

Ambiguous Reference: UITextField.text error Swift 3

所以我刚刚更新到 Xcode 8 并将我的 Swift 2.3 代码转换为 Swift 3,并且我在这行代码中有一个错误不是在 Swift 2.3:

let holder:NSString! = NSString.init(string: moneyBar.text!).substring(with: NSRange.init(location: y, length: 1))

现在在 Swift 2.3 中该行没有错误,但在 Swift 3 中看起来 moneyBar.text! 标记有错误 Ambiguous reference to member 'text'.

这是 Swift 3 错误吗?或者我遗漏了什么?

我想你想要的语法是:

let holder = NSString(string: moneyBar.text!).substring(with: NSRange(location: y, length: 1))

您正在访问单个字符,因此请考虑使用 String class.

的下标

let holder = text[text.index(text.startIndex, offsetBy: y)]

为方便起见,这里有一个扩展:

public extension String {

    func character(_ at: Int) -> Character {
        return self[self.index(self.startIndex, offsetBy: at)]
    }

    func substring(_ r: Range<Int>) -> String {
        let fromIndex = self.index(self.startIndex, offsetBy: r.lowerBound)
        let toIndex = self.index(self.startIndex, offsetBy: r.upperBound)
        return self.substring(with: Range<String.Index>(uncheckedBounds: (lower: fromIndex, upper: toIndex)))
    }

}

let text = "abc"
let holder1 = text.character(1) // b
let holder2 = text.substring(1..<2) // b