Flex: Как я могу перехватить что-то, прежде чем я получу ошибку «Не удается получить доступ к свойству или методу пустой ссылки на объект» - PullRequest
0 голосов
/ 06 октября 2011

Итак, у меня есть поставщик данных, который, когда модуль не используется, установлен в пустой массив arrayCollection. Затем, когда модуль готов к использованию, поставщик данных изменяется на массив массивов данных. По какой-то причине другая из моих функций имеет проблемы с этим. Я продолжаю получать следующую ошибку:

Невозможно получить доступ к свойству или методу пустой ссылки на объект

Следующая строка кода вызывает ошибку:

for (i = 0; i < pickupPhoto.length; i++)

Есть ли какой-нибудь способ убедиться, что у pickupPhoto есть свойство length перед вызовом этого цикла for? Я попробовал следующее, но я получил ту же ошибку:

if (pickupPhoto.hasOwnProperty("length"))

Также пробовал:

if (pickupPhoto.length)

Заранее спасибо, Brds

Ответы [ 2 ]

2 голосов
/ 06 октября 2011
if (pickupPhoto) {
    for (i = 0; i < pickupPhoto.length; i++) {
        /* ... */
    }
}

Кроме того, предпочтительнее хранить длину в переменной, а не вызывать метод length для каждой итерации:

var len:int = pickupPhoto.length;
for (i = 0; i < len; i++) {
    /* ... */
}
1 голос
/ 06 октября 2011

Ваша проблема не в том, что "length" не существует, а в том, что pickupPhoto фактически нулевое. Но вы можете проверить оба:

if (pickupPhoto && "length" in pickupPhoto) {
    // do something with pickupPhoto.length
}
...