2014-09-28 4 views
0

У меня есть класс, MyClass, и в другом классе у меня есть глобальная переменная массива:Swift: индекс для массива с пользовательским типом

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

+0

Gotcha, но вам нужно вызвать массив из класса, из которого он пришел. myArray не существует в вашем текущем классе, если вы не сделали то, что я уже показал. Если да, дайте мне знать, и я продолжу это. –

+0

Ты был прав Миннесоты. Когда я изменил способ инициирования, ошибка исчезла. Так что спасибо за комментарий, и извините, что до сих пор я этого не понимал. – Horatiu

0

У вас есть .. в коде, который не существует в Swift. Вероятно, вы имели в виду ..., но есть ..<.

Однако в вашем инициализаторе имеется массив нулевого размера, что означает, что вы не можете добавлять к нему значения. Вам нужно либо сначала создать новый массив нужного размера, либо добавить его с помощью myArray += [MyClass()].

Также обратите внимание, что -> Void не нужен - если у вас нет типа возврата, он будет неявным типом пустоты.

Смежные вопросы