Swift 4.2,Xcode 游乐场中的 String firstIndex() 函数错误
Posted
技术标签:
【中文标题】Swift 4.2,Xcode 游乐场中的 String firstIndex() 函数错误【英文标题】:Swift 4.2, String firstIndex() function error in Xcode playground 【发布时间】:2018-07-30 14:34:49 【问题描述】:我正在阅读《Swift 编程语言》 Swift 4.2”和“子字符串”部分下的“字符串和字符”一章中,以以下代码为例:
let greeting = "Hello, world!"
let index = greeting.firstIndex(of: ",") ?? greeting.endIndex
let beginning = greeting[..<index]
// beginning is "Hello"
// Convert the result to a String for long-term storage.
let newString = String(beginning)
我将此块复制并粘贴到我的 Xcode 游乐场;但是,我收到以下错误:
Playground execution failed:
error: MyPlayground.playground:6:13: error: value of type 'String' has
no member 'firstIndex'
let index = greeting.firstIndex(of: ",") ?? greeting.endIndex
^~~~~~~~ ~~~~~~~~~~
我检查了https://developer.apple.com/documentation/swift/string上的String类确实有一个名为firstIndex()的方法。
我的游乐场顶部有 import UIKit;。
你能告诉我为什么我会收到这个错误吗?
【问题讨论】:
就我测试您在我的 Xcode 10 beta 4 中显示的代码而言,它按预期运行。 Swift 4.2 附带 Xcode 10。您使用的是哪个版本的 Xcode?span> @OOPer 显然,我使用的是 9.4.1 版本的 Xcode。我没有意识到 Swift 4.2 附带 Xcode 10 beta 4。我很抱歉。我会确保下次检查。 事实上,Apple 并不擅长显示版本信息,许多开发人员对显示的 beta 文档感到疑惑。也许我们开发者需要向 Apple 发送更多请求,以改进开发者的网站。 @OOPer 我一定会让他们知道我遇到了这个问题,并希望他们以更好的方式警告我们这些版本。 【参考方案1】:你可以试试index(of
let index = greeting.index(of: ",") ?? greeting.endIndex
因为firstIndex
存在于 Xcode 10 beta 中 Doc
【讨论】:
成功了,谢谢。但是,您能否澄清为什么给定的示例会出现错误,尽管似乎有一个名为 firstIndex() 的方法? 文档始终更新为最新的 swift 版本,您的链接记录了 Swift 的 String 类而不是方法 firstIndex 我认为它只会针对最终版本而不是 beta 进行更新。但是,我了解到情况并非如此,下次会检查。以上是关于Swift 4.2,Xcode 游乐场中的 String firstIndex() 函数错误的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 自动完成功能在 Swift 游乐场的 Sources 文件夹中不起作用
如何在项目目录中的 Xcode 内打开 Playground?
Xcode 10, Swift 4.2及iOS 12升级适配
Firebase Deeplink 不触发应用程序:continueUserActivity:restorationHandler,Swift 4.2 Xcode10。