2016-04-20 10 views
3

に変換できません。ここには文字列がありますが、これは部分文字列にしようとしています。'Range <Int>'の型の値を 'Range <Index>'(別名Range <String.CharacterView.Index>)

let desc = "Hello world. Hello World." 
var stringRange = 1..<5 
desc.substringWithRange(stringRange) 

しかし、スウィフトは私にこのエラーを与えます。私は何を間違えたのですか?私はstringRangeの新しい表記法を使用しています。これは古いものを使用できないためです。

答えて

6

を適用することを期待substringWithRange方法ながら、あなたの1..<5は、タイプRange<Int>からです正しいタイプであれば、それはIntであると推定される。

let desc = "Hello world. Hello World." 
let stringRange = desc.startIndex..<desc.startIndex.advancedBy(5) 
let sub = desc[stringRange] 

それは少し複雑Stringとです:あなたは、文字列自体の範囲を作成する必要があります。あるいは、NSStringNSRangeに戻る:

let range = NSMakeRange(0, 5) 
let sub2 = (desc as NSString).substringWithRange(range) 
1

タイプRange<Index>

let desc = "Hello world. Hello World." 

var dd = desc.substringWithRange(desc.startIndex..<desc.startIndex.advancedBy(5)) 

からの値はあなたが作成したRangeが持っていないだけでなくdesc.startIndexからadvanceBy