不明确的引用: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
所以我刚刚更新到 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