Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   mx_internal_uid и преобразование типа (http://www.flasher.ru/forum/showthread.php?t=138786)

GrMerlin 15.04.2010 20:15

mx_internal_uid и преобразование типа
 
Следующая ситуация: Есть датагрид и есть тип данных Professor(запись базы данных. Описан как класс) который отображается в датагриде как ArrayCollection. При выборе записи датагрида необходимо присвоить ее переменной типа Professor. Это обеспечивается через событие change датагрида. В обработчик события передаю параметр event. В обработчике переменной присваиваю
Код AS3:

editedProfessor = Professor(DataGrid(event.target).selectedItem)

Вот тут возникает проблема... Вылетает ошибка:
Error #1034: Ошибка типа Coercion: невозможно преобразовать Object@566b499 в diplomServices.Professor.
Начал дебагить... Оказывается компилятор приписывает mx_internal_uid переменной data эвента. А при аналогичной обработке похожих классов компилятор не присваивает mx_internal_uid переменной data эвента. В общем, какие идеи?

wvxvw 15.04.2010 21:12

Одно к другому не относится. Ошибка потому, что вы использовали нетипизированый объект (возможн, сериализация не правильно написана) и попытались его конвертировать в объект определенного типа.
uuid / mx_internal_uuid и тому подобная ересь генерится для динамических объектов используемых в коллекции, если эта коллекция является датапровайдером компонента. Ну так вот во флексе сделаны коллекции...

GrMerlin 15.04.2010 23:28

Дело в том, что аналогичным образом я поступаю еще с тремя датагридами... Переменные определенных типов... Датагриду передаются через датапровайдер. Только вот в этом, последнем, возникла проблема... Остальные работают нормально... И только в последнем почему-то mx_internal_uid появляется... Может конечно оно и не при чем, но в работающих вариантах такого нет...

wvxvw 16.04.2010 00:39

Ну если вы будете спорить с рантайм ошибками, то в итоге победят ошибки :)
Просто вдумчиво еще раз прочитайте сообщение об ошибке.

ЗЫ: Coercion - по-русски "приведение".
Цитата:

Ошибка приведения типов: невозможно преобразовать Object@566b499 в diplomServices.Professor.

GrMerlin 16.04.2010 13:48

Да никто же с ошибками и не спорит. Да и словарем я пользуюсь:) Просто не могу понять откуда взялось это mx_internal_uid (да, я слабо себе представлю что это такое). Видимо именно из-за него компилятор не может привести переменную к нужному мне типу. Возможно даже вопрос поставить следующим образом: Откуда берется mx_internal_uid и как привести переменную с mx_internal_uid к переменной типу, которая не содержит такого поля. Или как избавиться от mx_internal_uid.

Волгоградец 16.04.2010 13:59

wvxvw не обманывает, ошибка не должна быть связана с mx_internal_uid. Но уж если хочется от него избавится - нужно поступить так: в Professor (или какой там объект передается) нужно сделать хотя бы одно свойство [Bindable] либо иплементировать IUID интерфейс либо создать свойство uid с каким-нибудь значением.

GrMerlin 16.04.2010 14:21

Просто кроме как причина ошибки - mx_internal_uid на ум ничего не приходит. Professor содержит поля id, firstName, lastName, serName и определено как Bindable (и класс определен и экземпляр класса). Откуда взялось mx_internal_uid!!!? Или если это не причина ошибки (что тоже возможно. Нужно все проверять), то как мне избавиться от этой ошибки? А вообще откуда оно берется это mx_internal_uid и почему?

Волгоградец 16.04.2010 14:55

http://livedocs.adobe.com/flex/3/htm...DevApps_1.html

GrMerlin 16.04.2010 15:29

Ммда... Проблему решил... Оказалось все достаточно глупо... При определении класса в FLEX в ActionScript файле указал описываемый класс один, а alias RemoteClass совершенно другой... Не знаю, как я это не заметил и как оно работало с этой опечаткой... Большое спасибо за помощь и за внимание! Вот выговорился, и все получилось:)


Часовой пояс GMT +4, время: 23:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.