如何在Swift中使用substringToIndex?
发布时间:2020-12-14 06:12:28 所属栏目:百科 来源:网络整理
导读:参见英文答案 Type ‘String.Index’ does not conform protocol ‘IntegerLiteralConvertible’3答案我在这行得到编译器错误: UIDevice.currentDevice().identifierForVendor.UUIDString.substringToIndex(8) 类型“String.Index”不符合协议“IntegerLite
参见英文答案 >
Type ‘String.Index’ does not conform protocol ‘IntegerLiteralConvertible’3答案我在这行得到编译器错误:
UIDevice.currentDevice().identifierForVendor.UUIDString.substringToIndex(8) 类型“String.Index”不符合协议“IntegerLiteralConvertible” 我的目的是获取子字符串,但是如何?
在Swift中,字符串索引涉及字形集群,而IndexType不是Int。您有两个选择 – 将字符串(您的UUID)转换为NSString,并将其用作“before”,或者为第n个字符创建索引。
两者如下图所示: 然而,该方法在Swift版本之间发生了根本性的变化。阅读以下版本… Swift 1 let s: String = "Stack Overflow" let ss1: String = (s as NSString).substringToIndex(5) // "Stack" //let ss2: String = s.substringToIndex(5)// 5 is not a String.Index let index: String.Index = advance(s.startIndex,5) let ss2:String = s.substringToIndex(index) // "Stack" CMD点击substringToIndex混淆地带你到NSString定义,但CMD点击字符串,你会发现以下: extension String : Collection { struct Index : BidirectionalIndex,Reflectable { func successor() -> String.Index func predecessor() -> String.Index func getMirror() -> Mirror } var startIndex: String.Index { get } var endIndex: String.Index { get } subscript (i: String.Index) -> Character { get } func generate() -> IndexingGenerator<String> } Swift 2 let s: String = "Stack Overflow" let ss1: String = (s as NSString).substringToIndex(5) // "Stack" //let ss2: String = s.substringToIndex(5)// 5 is not a String.Index let index: String.Index = s.startIndex.advancedBy(5) // Swift 2 let ss2:String = s.substringToIndex(index) // "Stack" Swift 3 let s: String = "Stack Overflow" let ss1: String = (s as NSString).substring(to: 5) // "Stack" let index: String.Index = s.index(s.startIndex,offsetBy: 5) var ss2: String = s.substring(to: index) // "Stack" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |