【问题标题】:Segmentation fault when trying to retrieve random letter from string尝试从字符串中检索随机字母时出现分段错误
【发布时间】:2017-05-11 23:39:58
【问题描述】:

我有这个功能:

func getRandomLetter() -> String {
    let len = allPossibleLetters.characters.count
    let r = arc4random_uniform(UInt32(len))
    let index = allPossibleLetters.index (allPossibleLetters.startIndex, offsetBy: r)
    return String(allPossibleLetters[index])
}

但是我在尝试编译时不断收到以下错误:

Command failed due to signal: Segmentation fault: 11

当我将一个整数硬编码到 offsetBy 参数中时,它可以正常工作:

let index = allPossibleLetters.index (allPossibleLetters.startIndex, offsetBy: 11)
// returns a letter as expected

知道是什么原因造成的吗?

【问题讨论】:

    标签: swift string swift3 segmentation-fault arc4random


    【解决方案1】:

    似乎是传递了错误类型的问题:

    let index = allPossibleLetters.index(allPossibleLetters.startIndex, offsetBy: Int(r))
    

    对于那些分段问题,如果您单击该错误,它将带您进入错误详细信息。通常这个日志的最后是最有趣的。 在你的情况下,它说:

    在 RangeText="allPossibleLetters.index(allPossibleLetters.startIndex, offsetBy: r)"

    【讨论】:

      【解决方案2】:

      想通了。改变了

      let r = arc4random_uniform(UInt32(len))
      

      let r = Int(arc4random_uniform(UInt32(len)))
      

      现在可以正常使用了。

      【讨论】:

        猜你喜欢
        • 2020-06-24
        • 2016-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-03
        • 2022-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多