【问题标题】:Objective-C: How to store typedef enum in a plist?Objective-C:如何将 typedef 枚举存储在 plist 中?
【发布时间】:2013-02-19 04:43:14
【问题描述】:

Plists 似乎可以输入的数据类型数量有限。但是,我知道存在漏洞,例如将 int 存储为 Number,然后使用 [x integerValue] 将其设置回 int。是否有类似的解决方法将 typedef 枚举存储在属性列表中?

由于它们实际上只是整数,有没有办法将它们存储为数字,然后将它们转换为它们的 typedef?

【问题讨论】:

    标签: objective-c plist typedef


    【解决方案1】:

    您必须存储原始枚举整数值,然后将它们作为整数再次加载。一旦您再次将它们加载为NSNumbers,您就可以使用[num intValue] 来获取整数。然后您可以将其与您的枚举进行比较,例如:

    intRep = [loadedNumber intValue];
    if (intRep == MY_ENUM_CONSTANT) {
        // Do something...
    }
    // ... etc.
    

    将值"MY_ENUM_CONSTANT" 存储为plist 中的字符串没有任何意义- 如果-isEqualToString 肯定与系统作斗争,则对其进行逆向工程。如果您需要更大的灵活性,尽管您可以将二进制数据对象存储在 plist 中,但对于您的需要,这可能有点过头了。

    【讨论】:

      【解决方案2】:

      您需要将它们转换为适合 plist 的格式,您可以使用最简单的整数值并使用 NSNumber,但您也可以编写几个函数来转换字符串值和从字符串值转换。如果您对枚举、0、1、2 等使用默认整数。然后您可以使用枚举作为字符串数组的索引,从字符串返回枚举/int,使用 for 循环通过您的字符串数组并返回匹配的索引。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-28
        • 1970-01-01
        • 2010-10-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多