How to compare Rangelt;String.Indexgt; and DefaultBidirectionalIndiceslt;String.CharacterViewgt;?(如何比较 Rangelt;String.Indexgt;和 DefaultBidirectionalIndiceslt;String.CharacterViewgt;?)
问题描述
这种比较在 Swift 2 中有效,但在 Swift 3 中不再适用:
This comparison worked in Swift 2 but doesn't anymore in Swift 3:
让 myStringContainsOnlyOneCharacter = mySting.rangeOfComposedCharacterSequence(at: myString.startIndex) == mySting.characters.indices
如何比较 Range 和 DefaultBidirectionalIndices?
How do I compare Range and DefaultBidirectionalIndices?
推荐答案
来自 SE-0065 - 集合和索引的新模型
在 Swift 2 中,collection.indices
返回了一个 Range
,但是因为范围是一对简单的索引,并且索引不能再在它们的拥有,Range
不再是可迭代的.
In Swift 2,
collection.indices
returned aRange<Index>
, but because a range is a simple pair of indices and indices can no longer be advanced on their own,Range<Index>
is no longer iterable.
为了保持上述代码正常工作,Collection
获取了一个始终可迭代的关联 Indices 类型,...
In order to keep code like the above working, Collection
has acquired an associated Indices type that is always iterable, ...
由于 rangeOfComposedCharacterSequence
返回一个 range字符索引,解决方案是不使用indices
,但是startIndex..
Since rangeOfComposedCharacterSequence
returns a range of
character indices, the solution is not to use indices
, but
startIndex..<endIndex
:
myString.rangeOfComposedCharacterSequence(at: myString.startIndex)
== myString.startIndex..<myString.endIndex
这篇关于如何比较 Range<String.Index>和 DefaultBidirectionalIndices<String.CharacterView>?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何比较 Range<String.Index>和 DefaultBidirectionalIndices<String.CharacterView>?


- 使用自定义动画时在 iOS9 上忽略 edgesForExtendedLayout 2022-01-01
- 想使用ViewPager,无法识别android.support.*? 2022-01-01
- 如何检查发送到 Android 应用程序的 Firebase 消息的传递状态? 2022-01-01
- Android - 我如何找出用户有多少未读电子邮件? 2022-01-01
- android 4中的android RadioButton问题 2022-01-01
- 在测试浓缩咖啡时,Android设备不会在屏幕上启动活动 2022-01-01
- 用 Swift 实现 UITextFieldDelegate 2022-01-01
- Android viewpager检测滑动超出范围 2022-01-01
- MalformedJsonException:在第1行第1列路径中使用JsonReader.setLenient(True)接受格式错误的JSON 2022-01-01
- Android - 拆分 Drawable 2022-01-01