Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.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
Ios 如何使arc4random在swift中选择4个不同的名称_Ios_Swift - Fatal编程技术网

Ios 如何使arc4random在swift中选择4个不同的名称

Ios 如何使arc4random在swift中选择4个不同的名称,ios,swift,Ios,Swift,当我在文本字段中写入5个名称时,如何使ARC4随机选择4个不同的名称而不进行回复 import UIKit class ViewController: UIViewController, UIPickerViewDelegate { var array = [String]() @IBOutlet var textfi1: UITextField! @IBOutlet var textfi2: UITextField! @IBOutlet var text

当我在文本字段中写入5个名称时,如何使ARC4随机选择4个不同的名称而不进行回复

 import UIKit

class ViewController: UIViewController, UIPickerViewDelegate {

    var array = [String]()

    @IBOutlet var textfi1: UITextField!
    @IBOutlet var textfi2: UITextField!
    @IBOutlet var textfi3: UITextField!
    @IBOutlet var textfi4: UITextField!
    @IBOutlet var textfi5: UITextField!


    @IBOutlet weak var lbl: UILabel!



    override func viewDidLoad() {
        super.viewDidLoad()


    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @IBAction func button(sender: AnyObject) {

          numberFive()

    }

    func numberFive() {

        array = [ textfi1.text! ,  textfi2.text! , textfi3.text! , textfi4.text! , textfi5.text! ]

        let randomIndex = Int(arc4random_uniform(UInt32(5)))

        lbl.text! = "\(array[randomIndex]) with \(array[randomIndex]) \n  \(array[randomIndex]) with \(array[randomIndex])"

        lbl.numberOfLines = 0

        }    

    }

据我所知,你想从5个名字的列表中随机选择4个,然后(随机)将它们配对成两对

/* say these are the names from the .text property
   of your UITextField instances */
var names = ["David", "Lisa", "Greg", "Hannah", "Richard"]

/* create an array of tuples to hold the pairs */
var pairs : [(String, String)] = []

/* randomly assign 4 out of 5 names into two pair containers */
let numPairs = names.count/2 // Int division => rounds down by simply dropping decimal value
for _ in 0..<numPairs {
    var newPair : (String, String)
    newPair.0 = names.removeAtIndex(Int(arc4random_uniform(UInt32(names.count))))
    newPair.1 = names.removeAtIndex(Int(arc4random_uniform(UInt32(names.count))))
    pairs.append(newPair)
}

/* random result */
pairs.forEach { print("\($0.0) with \($0.1)") }
/* Hannah with Lisa
   Greg with Richard */
/*说这些是.text属性中的名称
您的UITextField实例的*/
变量名称=[“大卫”、“丽莎”、“格雷格”、“汉娜”、“理查德”]
/*创建一个元组数组来保存这些对*/
变量对:[(字符串,字符串)]=[]
/*将5个名称中的4个随机分配到两对容器中*/
让numPairs=names.count/2//Int division=>通过简单地删除十进制值进行舍入

对于0中的uu..在拾取该项后将其从数组中移除,然后更改随机项的“最大”值。为什么标签出口较弱?请重新表述您的问题,因为它是incomprehensible@Larme我该怎么做呢?哦,老兄,你真好,非常感谢,终于有工作了@X.BOZO很乐意帮忙。只需确保您的
UILabel
“lbl”设置为显示多行,否则第二对将被截断。(例如,
lbl.numberOfLines=2
)。
// ... in your ViewController class

func divideIntoPairs() {

    if let name1 = textfi1.text, name2 = textfi2.text,
        name3 = textfi3.text, name4 = textfi4.text,
        name5 = textfi5.text {

        var names = [name1, name2, name3, name4, name5]

        var pairs : [(String, String)] = []

        let numPairs = names.count/2
        for _ in 0..<numPairs {
            var newPair : (String, String)
            newPair.0 = names.removeAtIndex(Int(arc4random_uniform(UInt32(names.count))))
            newPair.1 = names.removeAtIndex(Int(arc4random_uniform(UInt32(names.count))))
            pairs.append(newPair)

        }
        pairs.forEach { print("\($0.0) with \($0.1)") }
        /* 'SomeName' with 'AnotherName'
           'EvenAnotherName' with 'AFinalOtherName' */ 

        // or, to set this as a single String to UILabel: text property
        lbl.text = pairs.map { "\($0.0) with \($0.1)" }.joinWithSeparator("\n")
    }
}