Можете ли вы добавить объект в коллекцию массивов внутри коллекции массивов?
Я попытался добавить объект в 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);
}