将数组放入中的标签swift

标签: ios Swift
发布时间: 2017/3/6 23:06:18
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.
@IBAction func generateBtn(sender: UIButton) {
    let strt = UInt32(strtNum.text!)
    let end = UInt32(endNum.text!)
    let ttlNums = Int(amtNums.text!)

    let x = RandomNum()


    var z = 0

    while z<ttlNums{
        let y = x.rndNumGen(strt!, end: end!)
        z += 1
        var h = [String]()
        h.append(String(y))
        let display:String = h.joinWithSeparator(", ")

        winningNums.text = display
        print (display)

    }    
}

我不知道什么是此代码的问题。我想把字符串显示放进标签和它打印出从随机数发生器的最后一个编号。它打印到控制台时,它显示所有的随机数字。

解决方法 1:

现在首要的问题是您的阵列创建在每个循环迭代中新鲜和您的标签都被设置在每个循环迭代中。这意味着,该数组将只包含取得在该迭代中,此后它重置为一个新的数组的元素和新元素被添加。数组需要初始化一次开始的时候,和有元素添加到它一再在循环中,然后在结束时一次投入的标签。

@IBAction func generateBtn(sender: UIButton) {
    guard let startText = strtNum.text, let start = UInt32(startText),
          let endText = endNum.text, let end = UInt32(endText),
          let ttlText = amtNums.text, let ttlNums = UInt32(ttlText) else {
              //one of these is nil, handle it gracefully here
              return
          }

    let randomGenerator = RandomNum()

    var h = [String]()
    h.reserveCapacity(ttlNums)
    for _ in 0..<ttlNums {
        let randomNum = randomGenerator.rndNumGen(start, end: end)
        h.append(String(RandomNum))
    }

    let display = h.joinWithSeparator(", ")

    winningNums.text = display
    print(display)
}

我已经做了一些其他改变,使此代码以 Swift 的最佳做法和公约︰

  1. 不要强迫打开。使用 if letguard let 绑定来安全地处理空值。
  2. 给你的变量有意义的名称。避免使用单字母名称除了在特定的情况下。
  3. 不要把放在函数或方法名和程序括号旁边的空格。
  4. 不要使用 while 循环来遍历一个已知的范围。相反,使用 for in 循环。
  5. 不类型的 t3xtspk,它 mks 代码看起来的喜欢焦虑 teenagr 写了它。自动完成将干掉的话,为你,所以你几乎不会打字反正。使它容易和可读。

我会建议你做一些改变自己︰

  1. 重命名 generateBtn 。函数/方法做事情,他们的行动。他们应该用动词或动词短语命名。或许尝试像 displayRandomArray
  2. 重构随机阵列代入其自己的方法。
  3. 重命名 RandomNum 。它的外表,它根本不是数量,它是一个随机数发生器。也许试试RandomNumberGenerator
  4. 重命名 h
  5. 添加代码以处理发生时 .text 是零,或者它包含一个字符串,它不是 UInt32 时发生了什么 (从而导致 UInt32 初始值设定项失败并返回 nil )
官方微信
官方QQ群
31647020