2016-03-03 17 views
6

Ich habe einen Fehler in meinem Code wie "Wert kann nicht konvertiert werden vom Typ 'NSRange' (alias 'NSRange') zum erwarteten Argumenttyp 'Range' ('Range') ', aber ich weiß nicht, wie ich das lösen soll, bitte helfen Sie mir?Wert des Typs 'NSRange' (alias '_NSRange') kann nicht in den erwarteten Argumenttyp 'Bereich <Index>' konvertiert werden (auch 'Bereich <String.CharacterView.Index>')

Hier poste ich meinen Code.

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) 
      } 

Antwort

9

Sie sollten strNumber zu NSString konvertieren: var strNumber: NSString = txtPhoneNumber.text!

Mehr hier: NSRange to Range<String.Index>

+0

Vielen Dank für Ihre Hilfe, ist es für mich nützlich .. [email protected]öflich –

1

substringWithRange Methode funktioniert für NSString Typ

var strNumber: String = txtPhoneNumber.text! 

Änderung über der Linie

var strNumber: NSString = txtPhoneNumber.text as! NSString 
6

Swift 4:

Erste typecaste in einen String und dann auf dieser typecasted Zeichenfolge, die die Klassenmethode verwendet

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