OC中常见枚举写法 以及 字符串枚举探索

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

常见枚举写法

C语言模式的枚举写法:enum

typedef enum{
    KLTypeRed = 1,
    KLTypeGreen = 2,
    KLTypeOrange = 3,
} KLType;

普通【整型】枚举写法 :NS_ENUM  群昵称:ios-Swift/Object C开发上架
群号: 869685378   找ios马甲包开发者合作,有兴趣请添加Q 51259559

typedef NS_ENUM(NSUInteger, KLType) {
    KLTypeRed = 1,
    KLTypeGreen = 2,
    KLTypeOrange = 3,
};

位移枚举 :NS_OPTIONS

typedef NS_OPTIONS(NSUInteger, KLType) {
    KLTypeRed = 1 << 0,
    KLTypeGreen = 1 << 1,
    KLTypeOrange = 1 << 2,
};

字符串类型枚举实现方式探索

基于普通枚举,定义C方法实现

// 先定义一个常见的枚举
typedef NS_ENUM(NSUInteger, KLType) {
    KLTypeRed = 1,
    KLTypeGreen = 2,
    KLTypeOrange = 3,
};
// 定义一个C方法,C方法就是通过枚举值匹配字符串
NSString *KLTypeString(KLType status) {
    switch (status) {
        case KLTypeRed:
            return @"红色";
        case KLTypeGreen:
            return @"绿色";
        case KLTypeOrange:
            return @"橘色";
        default:
            return @"";
    }
}

基于普通枚举,定义C数组,设置 枚举值为 index

// 先定义一个常见的枚举
typedef NS_ENUM(NSUInteger, KLType) {
    KLTypeRed = 1,
    KLTypeGreen = 2,
    KLTypeOrange = 3,
};
// 这个是 Map NSString * 类型的数组
NSString *KLTypeStringMap[] = {
    [KLTypeRed] = @"红色",
    [KLTypeGreen] = @"绿色",
    [KLTypeOrange] = @"橘色"
};


// 使用:
KLTypeStringMap[KLTypeRed];// 枚举值

日常做法 宏定义

#define static NSString * const KLTypeStringRed = @"红色";
#define static NSString * const KLTypeStringGreen = @"绿色";
#define static NSString * const KLTypeStringOrange = @"橘色";

定义一种新的数据类型

 

// 定义一个新的类型 是 NSSting * 类型 类型名字叫 KLTypeStr
typedef NSString *KLTypeStr NS_STRING_ENUM;

static KLTypeStr const KLTypeStringRed = @"红色";
static KLTypeStr const KLTypeStringGreen = @"绿色";
static KLTypeStr const KLTypeStringOrange = @"橘色";

Apple官方的做法

 

.h 文件中 -------------
typedef NSString *KLTypeStr NS_STRING_ENUM;

FOUNDATION_EXPORT KLTypeStr const KLTypeStringRed;
FOUNDATION_EXPORT KLTypeStr const KLTypeStringGreen;
FOUNDATION_EXPORT KLTypeStr const KLTypeStringOrange;

.m 文件中 --------------
NSString * const KLTypeStringRed = @"红色";
NSString * const KLTypeStringGreen = @"绿色";
NSString * const KLTypeStringOrange = @"橘色";

 

比较的时候 StringEnum1 == StringEnum2 直接比较的是内存地址,效率会更高。
相比会产生过多二进制文件的宏定义方式,假如宏定义比较多,建议用FOUNDATION_EXPORT。

群昵称:ios-Swift/Object C开发上架
群号: 869685378   找ios马甲包开发者合作,有兴趣请添加Q 51259559

OC中的语法糖(你真的理解了点语法么?) 语法糖是一种大多程序员开发的时候使用的东西,今天我们一起来研究下OC中的语法糖。 阅读详情

相关推荐

oc 下定义字符串枚举

前言 在oc下常用的定义枚举的方式有两种 一种是使用enum关键字,示例如下: enum MyColor { Color_Red, Color_Green, Color_Orange, }; typedef enum MyColor MyColor; 或者使用 typedef enum { Color_Red, Color_Green, Color_Orange, }MyColor; 这样就可以用简写的MyColor代替 enum MyColor了。 另

Rey的技术博客 969

OC枚举写法 以及 字符串枚举探索

OC枚举写法 以及 字符串枚举探索常见枚举写法C语言模式的枚举写法:enum普通【整型】枚举写法 :NS_ENUM位移枚举 :NS_OPTIONS字符串类型枚举实现方式探索基于普通枚举,定义C方法实现基于普通枚举,定义C数组,设置 枚举值为 index日常做法 宏定义定义一种新的数据类型Apple官方的做法 常见枚举写法 C语言模式的枚举写法:enum typedef enum{ KLT...

Kael的博客 1216

OC与Swift混编 注意事项

前言 随着Swift发展, 很多新的项目开始使用Swift作为首选语言。 Swift语言以其简捷,快速的特点获得了一大波粉丝,我也是其中之一。 项目背景:公司一些旧项目大都使用OC编写, 运营中的项目也会时常维护。所以在新需求开发时,我也会尝试使用Swift语言来编写(使用OC还是Swift根据项目需要来),这就涉及到OC与Swift语言的混编。 大部分的情况是OC代码调用部分Swift编写的模块。 而在混编的过程也遇到了一些问题,本文就将这些问题一一整理出来。 注意事项 1.oc调用swift的类 sw

Rey的技术博客 2224

OC枚举写法 以及 字符串类型枚举实现探索

常见枚举写法C语言模式的枚举写法:enumtypedef enum{ KLTypeRed = 1, KLTypeGreen = 2, KLTypeOrange = 3, } KLType; 复制代码普通【整型】枚举写法 :NS_ENUMtypedef NS_ENUM(NSUInteger, KLType) { KLTypeRed = 1, KLTypeGre...

weixin_34194359的博客 942

OC枚举类型和字符串互转结合.pch文件的使用

前言 需求:写项目时碰到一个必须用 switch case语句判断前端发送请求调用哪个函数的问题,但 switch case 语句不能判断字符串类型,这时就有了将字符串转为枚举值进行判断的想法 再说说.pch文件:PrefixHeader.pch就是该项目的预编译头文件。.pch表示PreComplied Header,是一个工程要用到的来自于外部框架的头文件列表。Xcode将会首先会编译.pc...

咚个里个呛的博客 721

iOS 枚举类型

一.定义 typedef enum{ //在这个地方,可以定义相同的名称,给要用到的类型起个标识符,这个地方,是可以省略的 unknown, //大括号里面的内容,依据程序员的需要来填充,使用逗号隔开,最后一个可以不使用符号,默认的序号是从0开始的,最好在标记时给它赋值=0 ;如果在中途给它定义了数字,比如unknown=7,则以后的字符的

Mr_Big_Kong的博客 941

Swift 与 OC 枚举的异同

如果是利用class定义,需要定义一个类似Type的枚举来表示加减乘除,这就需要多写很多代码,更重要的是,加减乘除和具体的Double值之间的处理会比较繁琐,而对于枚举来说,就像呼吸一样自然。在swift中,枚举有几个新的能力,比如可以关联值,支持递归,进行模式匹配,定义方法,正是这些能力使得枚举实现了能力的进击,我们通过一个例子来展示一下这些特性如何让我们的表达更方便。} else { // 1、排列,2、分割数组,3、对分割后的两部分递归构造Exp,4、对递归的两个Exp数组组装成最终的Exp数组。

2401_83816970的博客 1148

工作备忘-ios中oc枚举值与字符串之间的转换

在工作中,枚举类型的使用优势没啥好说的。但经常需要将它与字串进行转换方便显示或其它需求。可惜原生的枚举值只能是int常量,并不支持字符串,我们只能自己对枚举值进行转换,一般有两种方案: 方案1中,多是先声明,然后在实现文件里创建一个映射表。这样带来的问题就是要分两个文件来管理,带来管理不方便不好。使用前还在确保映射表已经初始化。显然使用时还是有些许难受。 如果全部改用宏来实现则会好管理很多,而且对于映射表可以采用惰性初始化原则,即只有访问到时才创建。这就是方案2,也是这篇博客的重点。

jaccty的博客 7246

oc枚举映射字符串技巧

  后台返枚举数据给app,app需要对不同枚举转换成字符串显示。   一般想到方法用 switch 根据不同枚举变量返回不同字符串,结果就是判断代码写得很长,不优雅。更简便方式有如下: typedef NS_ENUM(NSInteger, StatusType) { StatusTypeNormal = 0, // 正常 StatusTypeConnecti...

594

OC 基础入门

OC 语法基础 OC 的语法知识其实有蛮多,以下知识基础的一部分. 目录部分: 文章目录 @ 符号 在 OC 语言中,绝大部分的关键字使用的@符号开头。记住这是一个规则就好了。 字符串 在 Java 中字符串和 C 语言中字符串定义的方式是一样的。 但是在 OC 中的字符串的定义是需要添加 @ 的,在OC字符串类型使用的是 NSString ,相对而言添加一个 NS 前缀。 Java: "Android" "Java" OC: @"OC" @"iOS" //比如定...

秋天的博客 2798

OC字符串比较方法

OC字符串比较常用方法 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //字符串比较方法 NSString *str1=@"abc";//第一个字符串 NSString *str2=@"abc";//第二个字符串 NSComparisonResult isEqual1=[str1 compare:str2]

迦南的专栏 1400

07、enum枚举

很多时候,我们需要用一组特定的值,来表达一个公共的含义。例如用1,2,3,4表示东、南、西、北,面对“把一组有相关意义的值定义成一个独立的类型”这样的任务,Swift为我们提供了一种类型安全的方式,叫做enum。 1、定义enum 1.1 不设置rawValue enum Week { case MON case TUE case WED case THU case FRI case SAT case SUN } 简写: enum Week {

重楼的博客 493

OC-NSArray与NSMutableArray

Objective-C中的集合类(NSArray、NSSet、NSDictionary)是用于存储和管理多个对象的工具类。

2501_91546205的博客 1424

OC和Swift语言的区别

OC和Swift的区别

eastWind1101的博客 2313

OC中的Values——and——Collections

值和集合 在OC中可以使用C中的基本数据类型。 可以在类的实现里面对这些基本数据类型的属性进行C中的:++ – += -= *=等操作。 如下所示: //---------接口声明----------- @interface XYZPerson : NSObject @property int age; -(void)gettingOlder; @end //----------接口实现------

Ray的博客 921

OC_数组(可变数组),快速枚举,相关方法总结

数组1.OC的数组里存放的一定是对象 2.凡是继承NSObject都可以用alloc和init进行创建对象 3.创建数组两种方法: 用便利构造器的方式创建一个空数组 NSArray *arr=[NSArray array]; 用字面量的方式创建一个数组 NSAr

xiaotangguofeifei的博客 1484
上一篇: 100天iOS数据结构与算法实战 Day02 – 栈的实现Demo
下一篇: iOS11 Files文件应用程序开发
ios8988
博客等级 码龄9年 51粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值