【问题标题】:how to pick a random ten (String) from an array in swift如何快速从数组中选择一个随机十(字符串)
【发布时间】:2015-07-29 03:25:22
【问题描述】:

谁能教我如何使用arc4random_uniform() 从数组中选择一个项目(String)?我试过了,但我不能,因为arc4random_uniform 可用于选择 Int。

【问题讨论】:

  • 基本上如上面的问题所示,您只需将随机数声明为整数,就像Int(randomNumber) 这样使您的数字类型成为整数而不是 UInt32
  • 我的意思是如何将字符串形式转换为整数?

标签: arrays swift


【解决方案1】:

下标数组需要和 Int,但 arc4random_uniform 返回 UInt32。所以你只需要在这些类型之间进行转换。

import Foundation

let array = ["ab", "cd", "ef", "gh"]

let randomItem = array[Int(arc4random_uniform(UInt32(array.count)))]

此外,arc4random_uniform 给出的随机数小于其参数。因此,只需将 array.count 转换为 UInt32,它就会起作用。

【讨论】:

  • 如果没有项目会崩溃。
【解决方案2】:

Swift 3 扩展

虽然 Oisdk 答案有效,但扩展可能更有用,而不是一遍又一遍地编写代码。

import Foundation

extension Array {

  func randomElement() -> Element  {
     if isEmpty { return nil }
     return self[Int(arc4random_uniform(UInt32(self.count)))]
  }
}

let myArray = ["dog","cat","bird"]

myArray.randomElement() //dog 
myArray.randomElement() //dog 
myArray.randomElement() //cat 
myArray.randomElement() //bird

【讨论】:

    猜你喜欢
    • 2020-10-04
    • 1970-01-01
    • 2014-04-03
    • 2020-11-01
    • 2011-11-13
    • 2011-09-22
    • 1970-01-01
    • 2017-01-12
    相关资源
    最近更新 更多