【问题标题】:Flex ResourceBundle get keys -> `content` doesn't provide key-value pairs any moreFlex ResourceBundle 获取键 -> `content` 不再提供键值对
【发布时间】:2012-04-24 09:16:59
【问题描述】:

我需要从属性文件中访问键值对,以及键的子字符串和确切的值,但这不应该改变任何东西。

当您查看诸如 http://help.adobe.com/en_US/Flex/4.0/UsingSDK/WS2db454920e96a9e51e63e3d11c0bf69084-7f2c.html(最后一段)之类的 Adob​​e 文档和帮助页面时,您会看到 Adob​​e 提到 ResourceBundle 的内容属性包含来自给定捆绑包的键值对。

ResourceBundle 的 ASDoc 还说: “子类覆盖此方法以返回一个包含捆绑资源的键值对的对象。” 然而,ASDoc 也说这个属性适用于 Flex 3。

无论如何,内容属性(对象类型)似乎没有存储键值对,因为我只获取值,而不是键。

我有点迷路了,如果有人有这方面的信息,请拍!

【问题讨论】:

    标签: actionscript-3 apache-flex flex4 flex4.5 resourcebundle


    【解决方案1】:

    ResourceBundle 的 ASDoc 说这个类和它的 API 从 Flex 3 开始就可用。所以该文档对于 Flex 4 及更高版本仍然有效。

    确保您使用的是“for in”循环而不是“for each”循环。 “for in”循环遍历对象的属性名称,而“for each”循环遍历值。

    此代码创建一个ResourceBundle 并遍历属性:

    var rb:ResourceBundle = new ResourceBundle("en_US", "bundleName");
    rb.content["foo"] = "Bar";
    rb.content["hello"] = "Howdy!";
    
    for (var key:String in rb.content)
    {
        trace("the key is: ", key);
        trace("the value is: ", rb.content[key]);
    }
    

    在迭代时,每个键都存储在 var key 中,并且可以使用 content[key] 从内容对象中检索它的值。

    在带有真实资源包文件的真实应用程序中,您从资源管理器(从您链接到的文档中)检索资源包:

    var rb:ResourceBundle =  ResourceBundle(resourceManager.getResourceBundle("en_US", "RegistrationForm"))
    

    然后你应该能够像上面那样迭代它的内容。

    【讨论】:

    • 我的代码有你描述的问题,一个for each循环而不是一个简单的for。现在可以正常工作。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2016-07-27
    • 2014-06-17
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    • 2015-12-16
    • 1970-01-01
    相关资源
    最近更新 更多