2016-09-19 8 views
1

Xcode 8に更新してSwift 2.3コードをSwift 3に変換しました。Swift 2.3以外のこのコード行にはエラーがあります。あいまいな参照:UITextField.textエラーSwift 3

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

今2.3行にエラーがないが、moneyBar.text!はエラーAmbiguous reference to member 'text'.

これはスウィフト3バグですが付いているようスウィフト3で、それが見えスウィフトに?または私は何かを欠いている?

答えて

1

私はあなたがしたい構文があると思う:

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

うん、 '聞かせてホルダーのようになります!NSStringの' 'あいまいなエラーcode'、感謝を引き起こしていました。 –

0

あなたはとてもStringクラスの添字を使用することを検討して単一の文字にアクセスしています。ここで

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 
関連する問題