Можете ли вы добавить объект в коллекцию массивов внутри коллекции массивов?

Я попытался добавить объект в ArrayCollection внутри ArrayCollection, и он не работает. Я получаю сообщение об ошибке № 1009 со следующей реализацией:

for (var x:Number = 0; x < identifyArrayCollection.length; x++)
{
    identifyArrayCollection[x].speedsArrayCollection.addItem(speedsObj);
}

Я могу добавить speedsObj к ArrayCollection, который не находится внутри ArrayCollection.

Любая помощь будет оценена.

Спасибо,

отметка

3 ответа

Следующий код добавляет элемент speedObj к ArrayCollection найдено по индексу x из ArrayCollection называется identifyArrayCollection,

identifyArrayCollection.getItemAt(x).addItem(speedsObj);

Это то, что вы ищете?


Код, который вы имеете, делает следующее:

identifyArrayCollection[x] 
//accesses the item stored in identifyArrayCollection 
//with the key of the current value of x
//NOT the item stored at index x

.speedsArrayCollection
//accesses the speedsArrayCollection field of the object
//returned from identifyArrayCollection[x]

.addItem(speedsObj)
//this part is "right", add the item speedsObj to the
//ArrayCollection

Предполагая, что identifArrayCollection представляет собой ArrayCollection, содержащий некоторые объекты, а speedsArrayCollection представляет собой ArrayCollection, определенную как переменную типа Object, содержащегося в identifierArrayCollection.

ты должен сделать:

for (var x:Number = 0; x < identifyArrayCollection.length; x++)
{
    identifyArrayCollection.getItemAt(x).speedsArrayCollection.addItem(speedsObj);
}

Не забывайте, что любой составной объект должен быть сначала инициализирован как таковой. Например (при условии первоначального запуска):

Есть два способа сделать это: поддержка @Sam

for (var x:Number = 0; x < identifyArrayCollection.length; x++)
{
   if (!identifyArrayCollection[x]) identifyArrayCollection[x] = new ArrayCollection();
   identifyArrayCollection[x].addItem(speedsObj);
}

или использование анонимного объекта, если вы действительно хотите использовать явные соглашения об именах - однако имейте в виду, что они НЕ проверяются во время компиляции (и при этом ничего не используется с помощью средства доступа к массиву):

for (var x:Number = 0; x < identifyArrayCollection.length; x++)
{
   if (!identifyArrayCollection[x]) 
   {
      var o:Object = {};
          o.speedsArrayCollection = new ArrayCollection();
      identifyArrayCollection[x] = o;
   }
   identifyArrayCollection[x].speedsArrayCollection.addItem(speedsObj);
}
Другие вопросы по тегам