objective-c - 将 NSStrings 转换为枚举的最佳方法

标签 objective-c ios enums nsstring

假设我定义了这个枚举(来自 Apple 的 UIKit 框架):

typedef enum {
    UITextAutocorrectionTypeDefault,
    UITextAutocorrectionTypeNo,
    UITextAutocorrectionTypeYes,
} UITextAutocorrectionType;

我有一个带有“UITextAutocorrectionTypeDefault”值的简单字符串。在我的例子中,这个字符串来自一个 JSON 对象,但这并不重要。

将字符串转换为正确的枚举值以便我可以在类中设置属性的最佳方法是什么?我知道 Obj-C 不能直接转换值(就像你可以用 Java 或 C# 做的那样),在我的例子中,我有很多枚举,这些枚举可能会在以后创建。除了必须手动创建映射字典之外,是否有任何自动或半自动的方式来执行此操作?

最佳答案

C(阅读 Objective-C)中,除了手动映射值之外没有办法做到这一点。枚举只是定义常量值,这些值不能在运行时转换为字符串或从字符串转换,就像它们在 C#Java 中一样,它们将它们视为对象。

你怎么能stringify编译时的值。

关于objective-c - 将 NSStrings 转换为枚举的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7986140/

相关文章:

ios - 如何从核心位置获取旧位置

ios - 为 `intentdefinition` 中定义的 Intent 自动生成的代码抛出 `No newline at end of file`

ios - armv7 未包含在构建中

ios - AppDelegate 类不适用于 iOS Swift 应用程序中的 Obj-C 嵌入式库

objective-c - 如何在继续之前等待过去的 dispatch_async?

ios - 重写枚举初始化?(rawValue : String) to not be optional

.net - 应对落后的枚举支持

c# - Html.GetEnumSelectList - 获取带空格的枚举值

objective-c - 无法识别的选择器发送到实例,原因

ios - 'UITableViewCell' 没有名为 'businessLabel' 的成员