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 中将本章作为游乐场打开”?

Xcode 10, Swift 4.2及iOS 12升级适配

Swift 性能中的 xy 数组

Firebase Deeplink 不触发应用程序:continueUserActivity:restorationHandler,Swift 4.2 Xcode10。