web-dev-qa-db-ja.com

タイプ 'NSRange'(別名 '_NSRange')の値を予期される引数タイプ 'Range <Index>'(別名 'Range <String.CharacterView.Index>')に変換できません

「タイプ 'NSRange'(別名 '_NSRange')の値を予期される引数タイプ '範囲'(別名 'Range')に変換できません」などのエラーがコードにありますが、これを解決する方法がわかりません助けて?

ここに私は私のコードを投稿します。

NSUserDefaults.standardUserDefaults().setObject("Hey I have started using this Chat App", forKey: "Status")
            var strNumber: String = txtPhoneNumber.text!
            var myRange: NSRange = NSMakeRange(0, 2)
            var myRange1: NSRange = NSMakeRange(0, 1)
            var ran: String = strNumber.substringWithRange(myRange)  ------>  //This line error shows.
            var ran1: String = strNumber.substringWithRange(myRange1)
            if (ran == "00") || (ran == "60") || (ran == "62") || (ran == "65") || (ran == "91") || (ran == "44") {
                strNumber = strNumber.stringByReplacingOccurrencesOfString(ran, withString: "") as String
            }
            else if (ran1 == "0") {

                strNumber = strNumber.stringByReplacingOccurrencesOfString(ran1, withString: myRange1) as NSString
                //str_number = str_number.stringByReplacingOccurrencesOfString(ran1, withString: "", options: NSCaseInsensitiveSearch, range: myRange1)
            }
12

strNumberをNSStringに変換する必要があります:var strNumber: NSString = txtPhoneNumber.text!

詳細: NSRange to Range <String.Index>

15
Blaz

Swift 4:

最初に文字列を型キャストし、次にこの型キャストされた文字列でクラスメソッドを使用します

let typeCasteToStringFirst = textField.text as NSString?
let newString = typeCasteToStringFirst?.replacingCharacters(in: range, with: string)
15
Naishta

substringWithRangeメソッドはNSStringタイプに対して機能します

var strNumber: String = txtPhoneNumber.text!

線より上に変更

var strNumber: NSString = txtPhoneNumber.text as! NSString
1
amitg3