从另一个视图控制器访问阵列数据

时间:2015-07-22 21:01:13

标签: ios xcode swift

TerningspilletSpillereViewController我有一个如下所示的数组:

var mineSpillere = ["1SP", "2SP", "3SP"]

以下:

func assignArray() {
   let obj = TerningspilletViewController()
   obj.mineSpillere2 = self.mineSpillere
}

在我的其他UIViewControllerTerningspilletViewController)我有这个

var mineSpillere2 = [String]()

我想通过函数在按钮上单击生成随机(1SP,2SP或3SP):

func generateNumber() {
    let array = aBB
    let randomIndex = Int(arc4random_uniform(UInt32(array.count)))

    randomLabel.text = (array[randomIndex])
}

但是这给了我以下错误:

  

致命错误:数组索引超出范围。

我这一行randomLabel.text = (array[randomIndex])

为什么?

2 个答案:

答案 0 :(得分:1)

请参阅此示例并更新您的使用情况。我不太了解你的命名,但这是你如何从不同的视图控制器(用数据初始化)获取数据。

First View Controller:

<Response [200]>

第二视图控制器:

import UIKit

class ViewController: UIViewController {

var arrayWithoutData = [String]()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    assignArray()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func assignArray() {

    let otherVC = NextViewController()
    arrayWithoutData = otherVC.mineSpillere

    println(arrayWithoutData)

}

}

答案 1 :(得分:0)

出现这种错误有两个原因:

  • 数组长度在调用array.count和数组访问之间变化。只有从另一个线程
  • 分配或修改数组时才会发生这种情况
  • 数组为空,在这种情况下arc4random_uniform永远不会产生数字0<=X<0(无论它返回什么都会触发索引越界异常)。

因此,如果您没有使用多个线程,请检查该数组是否为空。