将数组数据从一个视图控制器发送到另一个

Eri*_*lii 2 swift

我试图将一个数组从一个视图控制器复制到另一个视图控制器,但不知何故它不起作用..我尝试使用以下代码:

let otherVC = TerningspilletViewController()
        mineSpillere = otherVC.mineSpillere2
        println("otherVC")
Run Code Online (Sandbox Code Playgroud)

在视图控制器中,我想从中发送数据具有以下代码:

var mineSpillere = ["Spiller 1", "Spiller 2", "Spiller 3"]
Run Code Online (Sandbox Code Playgroud)

将要接收此数据的视图控制器具有以下代码:

var mineSpillere2 = [String]()
Run Code Online (Sandbox Code Playgroud)

var mineSpillere”将显示文本,但是当我尝试显示它时,它说“ var mineSpillere”为空。任何建议/想法?

Dha*_*esh 5

如果你想访问另一个 viewController 的数组,那么你可以将它保存在内存中,为此你可以使用NSUserDefaults这种方式:

//save
var mineSpillere = ["Spiller 1", "Spiller 2", "Spiller 3"]
var defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(mineSpillere, forKey: "YourKey")
Run Code Online (Sandbox Code Playgroud)

现在您可以通过以下方式从任何地方阅读它:

//read
if let testArray : AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("YourKey") {
    var readArray : [NSString] = testArray! as! [NSString]
    println(readArray)
}
Run Code Online (Sandbox Code Playgroud)

如果你想用你的旧方法来做这里是代码:

FirstViewController.swift

import UIKit

class FirstViewController: UIViewController {

    var mineSpillere = ["Spiller 1", "Spiller 2", "Spiller 3"]
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}
Run Code Online (Sandbox Code Playgroud)

SecondViewController.swift

import UIKit

class SecondViewController: UIViewController {

    var mineSpillere2 = [String]()
    override func viewDidLoad() {
        super.viewDidLoad()

        let otherVC = FirstViewController()
        mineSpillere2 = otherVC.mineSpillere
        println(mineSpillere2)  //[Spiller 1, Spiller 2, Spiller 3]
    }

}
Run Code Online (Sandbox Code Playgroud)