Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.04.2010, 20:15
GrMerlin вне форума Посмотреть профиль Отправить личное сообщение для GrMerlin Найти все сообщения от GrMerlin
  № 1  
Ответить с цитированием
GrMerlin

Регистрация: Feb 2010
Сообщений: 56
По умолчанию 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 эвента. В общем, какие идеи?

Старый 15.04.2010, 21:12
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Одно к другому не относится. Ошибка потому, что вы использовали нетипизированый объект (возможн, сериализация не правильно написана) и попытались его конвертировать в объект определенного типа.
uuid / mx_internal_uuid и тому подобная ересь генерится для динамических объектов используемых в коллекции, если эта коллекция является датапровайдером компонента. Ну так вот во флексе сделаны коллекции...
__________________
Hell is the possibility of sanity

Старый 15.04.2010, 23:28
GrMerlin вне форума Посмотреть профиль Отправить личное сообщение для GrMerlin Найти все сообщения от GrMerlin
  № 3  
Ответить с цитированием
GrMerlin

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

Старый 16.04.2010, 00:39
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну если вы будете спорить с рантайм ошибками, то в итоге победят ошибки
Просто вдумчиво еще раз прочитайте сообщение об ошибке.

ЗЫ: Coercion - по-русски "приведение".
Цитата:
Ошибка приведения типов: невозможно преобразовать Object@566b499 в diplomServices.Professor.
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 16.04.2010 в 00:42.
Старый 16.04.2010, 13:48
GrMerlin вне форума Посмотреть профиль Отправить личное сообщение для GrMerlin Найти все сообщения от GrMerlin
  № 5  
Ответить с цитированием
GrMerlin

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

Старый 16.04.2010, 13:59
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 6  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
wvxvw не обманывает, ошибка не должна быть связана с mx_internal_uid. Но уж если хочется от него избавится - нужно поступить так: в Professor (или какой там объект передается) нужно сделать хотя бы одно свойство [Bindable] либо иплементировать IUID интерфейс либо создать свойство uid с каким-нибудь значением.

Старый 16.04.2010, 14:21
GrMerlin вне форума Посмотреть профиль Отправить личное сообщение для GrMerlin Найти все сообщения от GrMerlin
  № 7  
Ответить с цитированием
GrMerlin

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

Старый 16.04.2010, 14:55
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 8  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
http://livedocs.adobe.com/flex/3/htm...DevApps_1.html

Старый 16.04.2010, 15:29
GrMerlin вне форума Посмотреть профиль Отправить личное сообщение для GrMerlin Найти все сообщения от GrMerlin
  № 9  
Ответить с цитированием
GrMerlin

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

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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