2014-09-28 65 views
0

我有一个类,MyClass,并在另一个类我有一个全局变量数组:斯威夫特:对标数组自定义类型

var myArray:[MyClass] 

MyClass我没有任何阵列。现在

,如果我想这样做:

for index in 0..10 { 
    self.myArray[index] = //a new object 
} 

我得到一个错误MyClass没有一个下标。任何想法为什么?请记住MyClass没有任何数组。

更多的代码向你展示我的意思:

class TheirClass { 
    var myArray: [MyClass] = [] // or use an initializer 

    func test() -> Void { 
    for index in 0..10 { 
     self.myArray[index] = MyClass() 
    } 
    } 
} 

class MyClass { 
    var prop1 = "" 
    var prop2 = 0 
} 

回答

0

如果要调用从另一个类变种,你就必须解决这个问题像我这样做如下:

class TheirClass { 
    var myArray: [MyClass] = [] // or use an initializer 
} 

class MyClass { 
    var objectArray = TheirClass().myArray 
} 

不知道如果这是你计划做或不做的。让我知道,我可以修改代码以符合您的目的。

+0

问题不在于启动数组。问题在于使用索引访问它的项目: – Horatiu 2014-09-28 15:36:09

+0

难题,但您必须从它来自的类中调用该数组。 myArray不存在于你当前的课程中,除非你做了我已经展示过的内容。如果你这样做,让我知道,我会进一步。 – 2014-09-28 15:38:33

+0

你是对的明尼苏达州史蒂夫。当我改变启动方式时,错误消失了。所以谢谢你的评论,并且遗憾的是我直到现在才意识到它。 – Horatiu 2014-09-29 06:50:03

0

你有..在Swift中不存在的代码。你的意思可能是...,但也有..<

但是,您的初始化程序中有一个大小为零的数组,这意味着您无法向其中添加值。您必须首先创建一个合适大小的新数组,或使用myArray += [MyClass()]追加到它。

另请注意,-> Void是不必要的 - 如果您没有返回类型,它将隐式地为void类型。