Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在swift 3中,如何推进索引?_Ios_Swift - Fatal编程技术网

Ios 在swift 3中,如何推进索引?

Ios 在swift 3中,如何推进索引?,ios,swift,Ios,Swift,在iOS 10 beta 6中,我试图从索引1开始获取字符串的子字符串,这是一个令人头痛的问题,因为swifts字符串不断变化,而且许多文档已经过时且无用 String有子字符串(from:Index),但它不能接受整数(这种情况已经存在一段时间了),所以我计划使用startIndex并将其提升1,但现在Index没有advanceBy方法,所以我不能这样做: let aString = "hello" let subString = aString.substring(from: aStrin

在iOS 10 beta 6中,我试图从索引1开始获取字符串的子字符串,这是一个令人头痛的问题,因为swifts字符串不断变化,而且许多文档已经过时且无用

String有子字符串(from:Index),但它不能接受整数(这种情况已经存在一段时间了),所以我计划使用startIndex并将其提升1,但现在Index没有advanceBy方法,所以我不能这样做:

let aString = "hello"
let subString = aString.substring(from: aString.startIndex.advanceBy(1))

如何从索引1中获取子字符串?如今,如何推进索引?子字符串(从索引)方法的要点是什么?您应该如何使用它?

看起来非常清楚,因为第一项是:

最明显的变化是索引不再具有
后继者()
前辈()
advancedBy(:)
advancedBy(::limit:)
)或
距离(:)
方法。相反,这些操作被移动到集合中,该集合现在负责递增和递减其索引

myIndex.successor()  =>  myCollection.index(after: myIndex)
myIndex.predecessor()  =>  myCollection.index(before: myIndex)
myIndex.advance(by: …) => myCollection.index(myIndex, offsetBy: …)
看起来你想要的是:

let greeting = "hello"
let secondCharIndex = greeting.index(after: greeting.startIndex)
let enryTheEighthGreeting = greeting.substring(from: secondCharIndex) // -> "ello"
(还请注意,如果您想要
收集
功能,如
字符串
上的索引管理,有时使用其视图会有所帮助。
字符串
方法,如
开始索引
索引(之后:)
只是转发到
字符
视图的便利。虽然在Swift 2 IIRC中,…
字符串
s本身不再是
集合
s,但这部分并不是新的。)

有关集合索引的更多信息,请参见。

Swift 3: 不太详细的解决方案:

let index:Int = 1
let str = "hello"
print(str.substring(from:str.idx(index)))//ello
extension String{
    func idx(_ index:Int) -> String.Index{
        return self.index(self.startIndex, offsetBy: index)
    }
}

我对斯威夫特的字符串模型也很厌倦,所以我写了自己的扩展。请看我的回答:@Leo Dabus。链接中接受的答案具有startIndex.advancedBy()。但正如我所指出的,advanceBy在10.6版中已经不存在了。公认的答案已经过时了。你可以试试我发布的beta 2版可能与beta 6版兼容
let index:Int = 1
let str = "hello"
print(str.substring(from:str.idx(index)))//ello
extension String{
    func idx(_ index:Int) -> String.Index{
        return self.index(self.startIndex, offsetBy: index)
    }
}