Arrays 如何在swift中从数组中随机选取十(字符串)

Arrays 如何在swift中从数组中随机选取十(字符串),arrays,swift,Arrays,Swift,有人能教我如何使用arc4random\u uniform()从数组中选择一个项目(String)吗?我试过了,但没有成功,因为arc4random\u uniform可用于选择Int。订阅数组需要和Int,但arc4random\u uniform返回UInt32。所以您只需要在这些类型之间进行转换 import Foundation let array = ["ab", "cd", "ef", "gh"] let randomItem = array[Int(arc4random_uni

有人能教我如何使用
arc4random\u uniform()
从数组中选择一个项目(
String
)吗?我试过了,但没有成功,因为
arc4random\u uniform
可用于选择Int。

订阅数组需要和Int,但arc4random\u uniform返回UInt32。所以您只需要在这些类型之间进行转换

import Foundation

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

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

此外,arc4random_uniform给出的随机数小于其参数。所以只要将array.count强制转换为UInt32,它就可以工作。

订阅数组需要和Int,但arc4random\u uniform返回UInt32。所以您只需要在这些类型之间进行转换

import Foundation

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

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

此外,arc4random_uniform给出的随机数小于其参数。所以只要将array.count强制转换为UInt32,它就会工作。

swift3扩展

虽然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

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

看一看基本上如上面的问题所示,你只需要将随机数声明为整数,如so
Int(randomNumber)
,这使你的数字类型成为整数而不是uint32我的意思是如何将字符串形式转换为整数?看一看基本上如上面的问题所示,您只需将随机数声明为整数,如so
Int(randomNumber)
,这使您的数字类型成为整数而不是UINT32。我的意思是如何将字符串形式转换为整数?如果没有项,这将崩溃。如果没有项,这将崩溃。