Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 尝试从字符串中检索随机字母时出现分段错误_Swift_String_Swift3_Segmentation Fault_Arc4random - Fatal编程技术网

Swift 尝试从字符串中检索随机字母时出现分段错误

Swift 尝试从字符串中检索随机字母时出现分段错误,swift,string,swift3,segmentation-fault,arc4random,Swift,String,Swift3,Segmentation Fault,Arc4random,我有这个功能: func getRandomLetter() -> String { let len = allPossibleLetters.characters.count let r = arc4random_uniform(UInt32(len)) let index = allPossibleLetters.index (allPossibleLetters.startIndex, offsetBy: r) return String(allPos

我有这个功能:

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

知道是什么原因吗?

找到了答案。改变

let r = arc4random_uniform(UInt32(len))


现在它工作正常。

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

let index = allPossibleLetters.index(allPossibleLetters.startIndex, offsetBy: Int(r))
对于这些分割问题,如果您单击该错误,它将带您查看错误详细信息。通常这个日志的结尾是最有趣的。 在你的情况下,它说:

在RangeText=“allPossibleLetters.index(allPossibleLetters.startIndex)处键入检查表达式时, 抵销人:r)

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