|
|
|||||
Регистрация: Jan 2014
Сообщений: 27
|
#1034 type coercion failed
Здравствуйте.
Помогите разобраться с проблемой приведения типов. Записываю в файл коллекцию объектов моего класса. Кода поднимаю файл, то возвращается коллекция объектов класса Object. Все поля класса и данные в порядке, все возвращается как надо, вот только надо чтоб это в результате была именно коллекция объектов моего класса. Последний раз редактировалось Youngflasher; 20.09.2014 в 00:03. |
|
|||||
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
В as3 типизированная коллекция, это Vector<T>
|
|
|||||
из приведенного кода нифига не понятно, что там нужно сделать, и что реально происходит.
Но можно точно сказать, что Result - это точно Object. Но Object - это не Result. Проще говоря, возможно только обратное преобразование, вот такое:
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
__________________
interplanety |
|
|||||
Регистрация: Jan 2014
Сообщений: 27
|
Ошибся, исправил, я просто показал два варианта приведения типов, что пробовал.
Но мне же все равно в результате вернется Vector<Object> ? |
|
|||||
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Вы или конкретный пример покажите или откажитесь от этой затеи вообще.
Могу сказать полную ерунду, но если что, меня поправят - public class Zero { public function Zero() { // } } public class One extends Zero { public function One() { // } } public class Two extends One { public function Two() { // } } // Вы можете так var object: Object = new Two( ) as One; var object: Object = new One( ) as Zero; // Но не можете вот так var object: Object = new Zero( ) as Two; Вы не можете базовый класс привести к своему классу. Это касаемо объектов с примитивами наверное немного по другому дела обстоят. Добавлено через 3 минуты Вы объясните, что Вам нужно из всего этого? Добавлено через 5 минут Так тоже не получится. |
|
|||||
Youngflasher
Вы все время пытаетесь вызвать конструктор Object, а хотите в результате получить экземпляр своего класса. Откуда флеш должен понять, что ему нужно делать экземпляры вашего класса? Вы сделали Object и естественно привести к типу расширяющему Object вы не можете. Создавайте экземпляры своего класса
__________________
interplanety |
|
|||||
Регистрация: Jan 2014
Сообщений: 27
|
[RemoteClass] // создаю класс с метатегом RemoteClass public class Result { public function Result(){} } .... public function writeData(object:Object):void // функция для записи в файл { var file:File = File.desktopDirectory.resolvePath("data.txt"); if (file.exists) file.deleteFile(); var fileStream:FileStream = new FileStream(); fileStream.open(file, FileMode.WRITE); fileStream.writeObject(object); fileStream.close(); } public function readData():Object // функция для чтения из файла { var file:File = File.desktopDirectory.resolvePath("data.txt"); if(!file.exists) return 0; var fileStream:FileStream = new FileStream(); fileStream.open(file, FileMode.READ); var obj:Object = fileStream.readObject(); fileStream.close(); return obj; } .... public function initApplication():void // функция при инициализации приложения { writeData(new Result()); // записываю объект класса в файл. var result:Result = readData() as Result; //создаю объект своего класса и инициализирую его данными из файла. var array:ArrayCollection = new ArrayCollection(); // создаю коллекцию и наполняю ее объектами своего класса. array.addItem(new Result()); array.addItem(new Result()); array.addItem(new Result()); writeData(array); // записываю коллекцию в файл. var arr:ArrayCollection = readData() as ArrayCollection; // инициализирую новую коллекцию коллекцией из файла. // Вот тут и проблема, возвращается коллекция наполнена объектами типа Object. //Как сделать чтоб это были объекты моего класса? //такой вариант не подходит /*for each (var object:Object in arr) { object = object as Result; }*/ } |
|
|||||
Разберитесь с registerClassAlias и учитесь гуглить, в сети навалом примеров на ваш случай, привожу только первый попавшийся
Добавлено через 2 минуты и еще не понял зачем для вашего случая метатег [RemoteClass]? Он нужен для типизации объектов полученных с сервера по amf3, у вас этого вроде не наблюдается. |
|
|||||
Регистрация: Jan 2014
Сообщений: 27
|
Цитата:
Работает как с RegisterClassAlias так и с [RemoteClass]. В программе будет работа с сервером. |
Часовой пояс GMT +4, время: 22:01. |
|
« Предыдущая тема | Следующая тема » |
|
|