【问题标题】:Swift 4.2, String firstIndex() function error in Xcode playgroundSwift 4.2,Xcode 游乐场中的 String firstIndex() 函数错误
【发布时间】: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 我一定会让他们知道我遇到了这个问题,并希望他们以更好的方式警告我们这些版本。

标签: swift xcode


【解决方案1】:

你可以试试index(of

let index = greeting.index(of: ",") ?? greeting.endIndex

因为firstIndex 存在于 Xcode 10 beta 中 Doc

【讨论】:

  • 成功了,谢谢。但是,您能否澄清为什么给定的示例会出现错误,尽管似乎有一个名为 firstIndex() 的方法?
  • 文档始终更新为最新的 swift 版本,您的链接记录了 Swift 的 String 类而不是方法 firstIndex
  • 我认为它只会针对最终版本而不是 beta 进行更新。但是,我了解到情况并非如此,下次会检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多