flex 强制转换类型失败无法将object转换为XXX
错误描述
flex在加载module时报出如题所示的错误,
实际表现
问题就出现在这 我取消这个错误提示框 再次在前台查询数据 就一切ok
问题就出现在这一句
var zoufangModel:ZfRecord=ZfRecord(data);
调试
第一次是这样 继续就出抛出错误
取消错误再次查询 调试的结果就是这样
多了个[inherited] 确实第二次是正常的 但为什么第一次不行 到现在也不明白
解决方法
将错误的那一句改成
var zoufangModel:ZfRecord = ObjectTranslator.objectToInstance( data, ZfRecord ) as ZfRecord;
ObjectTranslator类的代码如下
/*
* Copyright (c) 2006 Darron Schall <darron@darronschall.com>
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
package com.common.util
{
    
    import flash.net.ObjectEncoding;
    import flash.net.registerClassAlias;
    import flash.utils.ByteArray;
    import flash.utils.describeType;
    import flash.utils.getDefinitionByName;
    
    /**
     * Utility class to convert vanilla objects to class instances.
     */
    public final class ObjectTranslator
    {
        
        /**
         * Converts a plain vanilla object to be an instance of the class
         * passed as the second variable.  This is not a recursive funtion
         * and will only work for the first level of nesting.  When you have
         * deeply nested objects, you first need to convert the nested
         * objects to class instances, and then convert the top level object.
         *
         * TODO: This method can be improved by making it recursive.  This would be
         * done by looking at the typeInfo returned from describeType and determining
         * which properties represent custom classes.  Those classes would then
         * be registerClassAlias'd using getDefinititonByName to get a reference,
         * and then objectToInstance would be called on those properties to complete
         * the recursive algorithm.
         *
         * @param object The plain object that should be converted
         * @param clazz The type to convert the object to
         */
        public static function objectToInstance( object:Object, clazz:Class ):*
        {
            var bytes:ByteArray = new ByteArray();
            bytes.objectEncoding = ObjectEncoding.AMF0;
            
            // Find the objects and byetArray.writeObject them, adding in the
            // class configuration variable name -- essentially, we're constructing
            // and AMF packet here that contains the class information so that
            // we can simplly byteArray.readObject the sucker for the translation
            
            // Write out the bytes of the original object
            var objBytes:ByteArray = new ByteArray();
            objBytes.objectEncoding = ObjectEncoding.AMF0;
            objBytes.writeObject( object );
            
            // Register all of the classes so they can be decoded via AMF
            var typeInfo:XML = describeType( clazz );
            var fullyQualifiedName:String = typeInfo.@name.toString().replace( /::/, "." );
            registerClassAlias( fullyQualifiedName, clazz );
            
            // Write the new object information starting with the class information
            var len:int = fullyQualifiedName.length;
            bytes.writeByte( 0x10 );  // 0x10 is AMF0 for "typed object (class instance)"
            bytes.writeUTF( fullyQualifiedName );
            // After the class name is set up, write the rest of the object
            bytes.writeBytes( objBytes, 1 );
            
            // Read in the object with the class property added and return that
            bytes.position = 0;
            
            // This generates some ReferenceErrors of the object being passed in
            // has properties that aren't in the class instance, and generates TypeErrors
            // when property values cannot be converted to correct values (such as false
            // being the value, when it needs to be a Date instead).  However, these
            // errors are not thrown at runtime (and only appear in trace ouput when
            // debugging), so a try/catch block isn't necessary.  I'm not sure if this
            // classifies as a bug or not... but I wanted to explain why if you debug
            // you might seem some TypeError or ReferenceError items appear.
            var result:* = bytes.readObject();
            return result;
        }
        
    } // end class
} // end package
参考资料
http://blog.163.com/hongwei_benbear/blog/static/118395291201122612328768/
flex 强制转换类型失败无法将object转换为XXX的更多相关文章
- TypeError: Error #1034: 强制转换类型失败:无法将 "" 转换为 Array。
		
1.错误描述 TypeError: Error #1034: 强制转换类型失败:无法将 "" 转换为 Array. at mx.charts.series::LineSeries/ ...
 - TypeError: Error #1034: 强制转换类型失败:无法将 "0.49" 转换为 mx.graphics.IFill。
		
1.错误描述 TypeError: Error #1034: 强制转换类型失败:无法将 "0.49" 转换为 mx.graphics.IFill. at mx.charts.ser ...
 - TypeError: Error #1034: 强制转换类型失败:无法将 mx.controls::DataGrid@9a7c0a1 转换为 spark.core.IViewport。
		
1.错误描述 TypeError: Error #1034: 强制转换类型失败:无法将 mx.controls::DataGrid@9aa90a1 转换为 spark.core.IViewport. ...
 - TypeError: Error #1034: 强制转换类型失败:无法将 flash.events::MouseEvent@73b7cc1 转换为 mx.events.ItemClickEvent。
		
1.错误描述 TypeError: Error #1034: 强制转换类型失败:无法将 flash.events::MouseEvent@73b7cc1 转换为 mx.events.ItemClick ...
 - Flash Professional 报错 TypeError: Error #1034: 强制转换类型失败:无法将 xxxx@zzzz 转换为 yyy
		
通常是因为xxx yyy 两个不同链接名的元件 使用了同一个属性名
 - Web | JavaScript的引用数据类型强制转换类型
		
我在这里主要的想提下的是JavaScript中的引用类型进行强制转换类型.因为对于基本数据类型的变换大多都是雷同的,很容易熟知,但是引用数据类型有一点小插曲. JavaScript的引用类型主要为对象 ...
 - PHP强制转换类型
		
PHP强制转换类型 获取数据类型 : 1.如果想查看某个表达式的值和类型,用var_dump(). 2.如果只是想得到一个易读懂的类型的表达方式用于调试,用 gettype().3.要查看某个类型 ...
 - 简述Java变量和强制转换类型
		
简述Java变量和强制转换类型 java变量 1. java变量 变量:顾名思义,就是在java执行程序过程中可以发生改变的量,就好比方程式中的未知数X一样. 变量的内存分配过程 int a ; // ...
 - C++ 4 种具有更 为准确语义的新强制转换类型
		
1. static_cast<T>() 可用于把指向A 的指针强制转换为指向B 的指针,其约束条件是类B必须是类A的子类.例如:A *obj = new B;B *b = static_c ...
 
随机推荐
- SVN冲突解决
			
问题一.执行SVN commit时候,会生成除正常文件之外.mine..r3439 ..r3368的三个文件 .mine:是自己要提交的版本 .r3439:在别人之前提交的版本 .r3368:初始版本 ...
 - mongoDB安装和启动
			
安装: 1. mongodb(V3.4.7)安装包下载地址:https://www.mongodb.com/download-center#community 下载成功后直接运行,安装模式选择cust ...
 - 009.Working with SQL Server LocalDB --【在sql server localdb 上操作数据】
			
Working with SQL Server LocalDB 在sql server localdb 上操作数据 2017-3-7 2 分钟阅读时长 本文内容 1.SQL Server Expres ...
 - 剑指架构师系列-持续集成之Maven实现项目的编译、发布和部署
			
Maven组织项目进行编译.部署 Maven项目基本的结构说明如下: mazhi // 控制所有荐的编译.部署.发布 mazhi-app-parent // 项目的父项目,有一些公共的设置可以被子 ...
 - 阿里云linux下web服务器配置
			
markdown截图不方便,本教程不用markdown编写 首先参考文章 https://www.jianshu.com/p/2604e53a7f6a?from=singlemessage 安装完后无 ...
 - JQuery写的一个常见的banner
			
大致的布局如下: <div class="banner" > <div class="pic"> ...
 - 【if...else】身高预测
			
每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传.饮食习惯与体育锻炼等.小孩成人后的身高与其父母的身高和自身的性别密切相关.设faHei ...
 - Redis监控工具,命令和调优
			
Redis监控工具,命令和调优 1.图形化监控 因为要对Redis做性能测试,发现了GitHub上有个python写的RedisLive监控工具评价不错.结果鼓捣了半天,最后发现其主页中引用了Goog ...
 - ToolBar控件详解
			
ToolBar控件详解 在Activity中添加ToolBar 1.添加库 dependencies { ... compile "com.android.support:appcompat ...
 - Spark UI界面原理
			
当Spark程序在运行时,会提供一个Web页面查看Application运行状态信息.是否开启UI界面由参数spark.ui.enabled(默认为true)来确定.下面列出Spark UI一些相关配 ...