Ios 带数组的Swift 2结构

Ios 带数组的Swift 2结构,ios,arrays,swift,struct,static,Ios,Arrays,Swift,Struct,Static,我不熟悉Swift和制作游戏(也不熟悉一般的编码),目前我想在两个游戏场景s之间传递一个变量。在做了一些研究之后,我得出了一个结论,我需要一个带有[int]()的结构来保存由于某种原因而需要的数字,而我无法将值分配到my integer数组generatedSequenceArray 我的结构: struct generatedSequenceForGameScene { static var generatedSequenceArray = [Int]() } 在我的一个游戏场景类

我不熟悉Swift和制作游戏(也不熟悉一般的编码),目前我想在两个
游戏场景
s之间传递一个变量。在做了一些研究之后,我得出了一个结论,我需要一个带有
[int]()
结构来保存由于某种原因而需要的数字,而我无法将值分配到my integer数组
generatedSequenceArray
我的结构:

struct generatedSequenceForGameScene {
     static var generatedSequenceArray = [Int]()
}
在我的一个
游戏场景
类中,我初始化了我的
生成的场景序列
结构
对象:

var generatedSequence = generatedSequenceForGameScene()
我调用的方法是:

func pickNumbers(){

    for var x = 0; x < highLevel; ++x{
        generatedSequence.generatedSequenceArray.append(Int(arc4random_uniform(10)))
        print(generatedSequence.generatedSequenceArray)

   }
}
这给了我想要的结果。
注意:
pickNumber
方法在名为
loadView()
的方法中调用,该方法位于程序的
didMoveToView
方法中

首先,结构中的
static
关键字使
generatedSequenceArray
成为静态属性。这意味着无论你叫它什么地方它都是一样的。这不是你想要的

其次,除非您计划向结构添加更多属性,否则它没有存在的理由。为什么要把它包装成一个结构呢?为什么不直接传递整数数组(您选择的数字)


第三,类型名称应该是适当的大小写。所以
generatedsequenceforamescene
应该是
generatedsequenceforamescene
)。

我不确定到底是什么不适合你。我猜你在从一个游戏场景到另一个游戏场景的序列共享上有困难。如果这是问题所在,也许以下方法会有所帮助:

struct Sequence {
    var seqArray = [Int]()

    mutating func pickNumbers() {

        for var x = 0; x < 10; ++x {
            seqArray.append(Int(arc4random_uniform(10)))
        }
        print( "picked: \(seqArray)" )
    }
}

class GameScene {
    var s = Sequence()
}

var g1 = GameScene()
var g2 = GameScene()

g1.s.pickNumbers()
g2.s.seqArray = g1.s.seqArray

print( g2.s.seqArray )
结构序列{ var seqArray=[Int]() 变异func pickNumbers(){ 对于变量x=0;x<10;++x{ seqArray.append(Int(arc4random_uniform(10))) } 打印(“拾取:\(seqArray)”) } } 课堂游戏场景{ var s=序列() } var g1=游戏场景() var g2=游戏场景() g1.s.PickNumber() g2.s.seqArray=g1.s.seqArray 打印(g2.s.seqArray)
我之所以使用
静态
变量,是因为我希望它无处不在。目的是让我可以将这个整数数组传递到另一个场景,在那里它可以做其他事情。我还发现这个例子,我也不知道任何其他方式传递一个变量或数组到一个单独的场景文件。(我一点也不使用故事板)谢谢你,我在正确的外壳上犯了错误,不过我一定会改正的。否,否::-D如果要在控制器之间传递某些内容,请确保为下一个控制器创建并保留一个控制器的引用,或者创建一个可以从任何位置访问的单例,该单例生成并提供公共数据。您的错误使用了
静态
。正如我之前所说,这不是你想要的。谢谢你,我以前听过术语singleton(我知道它是一个只能生成一次的类的实例),但我不知道如何使用它(在swift或其他任何地方),我该如何生成和使用它?(我使用的不是控制器,而是我制作的‘SKScene’的子类(在我称它们为《意外事件》(对不起)中的
GameSecene
)之前),请仔细阅读:(首先模式在ObjC中给出,然后在Swift中给出)…您的想法是通过调用类似于
GameManager.sharedInstance.gameSequence
(其中
gameSequence
GameManager
的一个属性)的内容,使某个game manager对象从任何地方生成并提供您的游戏数据。我假设我只是将我所有的方法和变量放在
静态let sharedInstance
下。我仍然遇到另一个问题,我用singleton制作的
SKScene
在游戏开始时运行。当我尝试在另一个场景中使用我的“Sequence”变量时,会看到序列(数组为空)即使当我运行我的第一个
SKScene
时,“Sequence”变量包含元素,这是我的,但我不想创建
GameScene
对象,我似乎也犯了一个错误
GameScene
(抱歉)我指的是
SKScene
的子对象。在我的程序中,我希望子对象
SKScene
根据用户当前处于
x
的级别生成一个随机整数序列,然后将同一数组转移到另一个
SKScene
,以便我可以继续使用它。(我还希望我的变量
highestLevel
对于每个
SKScene
都是相同的,并且设备应该记住它。(我相信NSUserDefaults)如果你想要两个变量,
highestLevel
Sequence
在应用程序的所有使用中都是相同的,那么就将它们设为全局变量。当你说“设备应该记住它”时,听起来好像你想寻找与搜索匹配的SO(StackOverflow)答案。
struct Sequence {
    var seqArray = [Int]()

    mutating func pickNumbers() {

        for var x = 0; x < 10; ++x {
            seqArray.append(Int(arc4random_uniform(10)))
        }
        print( "picked: \(seqArray)" )
    }
}

class GameScene {
    var s = Sequence()
}

var g1 = GameScene()
var g2 = GameScene()

g1.s.pickNumbers()
g2.s.seqArray = g1.s.seqArray

print( g2.s.seqArray )