swift介绍:Swift 语言由苹果公司在 2014 年推出,用来撰写 Mac OS 和 iOS 应用程序,并且Swift还是开源的,开源地址:https://github.com/apple/swift,同时附上官方博客地址:https://swift.org
目前Swift已经发展到了第五版本。显然苹果大有推翻 OC “江山”的意思.
今天就来初探一下Swift,看看究竟为何swift有这么大的能力。
参考内容:
Swift中文
YungFan老师
一、OC中的枚举:
(参考:iOS - OC Enum 枚举)
- 样式枚举定义
- 定义枚举类型
/*
typedef enum new;
new:枚举类型的变量值列表
C 样式的枚举默认枚举类型变量值的格式为整型
*/
typedef enum {
AA,
BB,
CC
} Name;
- 判断枚举值
- (void)studentWithName:(Name)name {
switch (name) {
case 0:
NSLog(@"AA");
break;
case 1:
NSLog(@"BB");
break;
case 2:
NSLog(@"CC");
break;
default:
break;
}
}
- 设置枚举的值
[self studentWithName:1];
[self studentWithName:CC];
2.数字型枚举定义
- 定义枚举
/*
typedef NS_ENUM(_type, _name) new;
_type:枚举类型变量值的格式或者类型
_name:枚举类型的名字
new:枚举类型的变量值列表
*/
typedef NS_ENUM(NSUInteger, Seasons) {
spring = 0,
summer,
autumn,
winter
};
- 判断枚举值
- (void)selectWithSeasons:(Seasons)seasons {
if (seasons == 1 || seasons == 2) {
NSLog(@"comfortable");
} else {
NSLog(@"cold");
}
}
- 设置枚举的值
[self selectWithSeasons:0];
[self selectWithSeasons:autumn];
- 位移型枚举
- 使用 按位或 可以给一个参数同时设置多个 "类型"。在具体执行的时候,使用 按位与 可以判断具体的 "类型"。
- OC 中 64 位操作系统 NSInteger 64 位 - long ⇒ 能够表示 64 种选项。通过位移设置,就能够得到非常多的组合。
- 对于位移枚举类型,如果传入 0,表示什么附加操作都不做!=> 执行效率是最高的。如果开发中,看到位移的枚举,同时不要做任何的附加操作,参数可以直接输入 0!
- 定义枚举
/*
typedef NS_OPTIONS(_type, _name) new;
_type:枚举类型变量值的格式
_name:枚举类型的名字
new:枚举类型的变量值列表
位移的枚举判断不能使用 else,否则会丢选项
*/
typedef NS_OPTIONS(NSUInteger, ActionTypeOptions) {
ActionTypeTop = 1 << 0,
ActionTypeBottom = 1 << 1,
ActionTypeLeft = 1 << 2,
ActionTypeRight = 1 << 3
};
- 判断枚举值
- (void)movedWithActionType:(ActionTypeOptions)type {
if (type == 0) {
return;
}
if (type & ActionTypeTop) {
NSLog(@"上 %li", type & ActionTypeTop);
}
if (type & ActionTypeBottom) {
NSLog(@"下 %li", type & ActionTypeBottom);
}
if (type & ActionTypeLeft) {
NSLog(@"左 %li", type & ActionTypeLeft);
}
if (type & ActionTypeRight) {
NSLog(@"右 %li", type & ActionTypeRight);
}
}
- 设置枚举的值
[self movedWithActionType:0];
[self movedWithActionType:ActionTypeLeft | ActionTypeTop | ActionTypeBottom | ActionTypeRight];
二、Swift中枚举的:
- 介绍:
- 枚举为一组相关值定义了一个通用类型,从而可以让你在代码中类型安全地操作这些值。
- 枚举为提供的类型很多,如:Int、Double、String等等;不必为单一的类型。
- 枚举的声明:
用enum
关键字来定义一个枚举,然后将其所有的定义内容放在一个大括号( {})
中
- 语法:
enum SomeEnumeration {
// enumeration definition goes here
}
- 例子:
写法一:一个一个写枚举的成员
enum name {
case OC
case Swift
case Python
case Java
}
写法二:多个成员值在同一行中声明
enum name2 {
case OC, Swift, Python, Java
}
在枚举中定义的值就是枚举的成员值(或者成员) case
则明确了要定义的成员值
- 获取枚举的成员值
通过点语法
实现
var ProLanguage = name.OC
// 更改值
ProLanguage = name.Swift
ProLanguage = .Java
- 使用 Switch 语句来匹配枚举值
switch ProLanguage {
case .OC:
print("Obj-c")
case .Swift:
print("Swift")
case .Python:
print("Python")
case .Java:
print("Java")
}
当你无法匹配所有的枚举值的时候,可以使用关键字default
switch ProLanguage {
case .OC:
print("Obj-c")
case .Swift:
print("Swift")
case .Python:
print("Python")
default:
print("Ohter proLanguage")
}
- 遍历枚举情况(case)
通过在枚举名字后面写 : CaseIterable 来允许枚举被遍历。
通过关键字allCases
来获取对应枚举类型所有情况的集合。
enum name3 : CaseIterable {
case OC, Swift, Python, Java
}
let ProLanguageCount = name3.allCases.count
print(ProLanguageCount)
for itemLanguage in name3.allCases {
print(itemLanguage)
}
- 初始值
用来存储相同的值
, 这也是枚举的另外一种定义方法
enum name4 : String {
case OC = "OCString"
case Swift = "SwiftString"
case Java = "JavaString"
case Python = "pythonString"
}
- 隐式初始值
当你在操作存储整数或字符串原始值枚举的时候,你不必显式地给每一个成员都分配一个原始值。当你没有分配时,Swift 将会自动为你分配值。
enum name5 : String {
case OC = "OCString"
case Swift // 隐式初始值为Swift
case Java
case Python
}
- 访问初始值
通过rawValue
属性来访问
let ProLanguage1 = name4.Python.rawValue
- 从原始值初始化
通过初始值来访问枚举成员值。
因为可能会存在为空的情况,所以返回的是可选类型
let possibleLanguage = name4(rawValue: "OCString")
print(possibleLanguage!)
枚举的介绍就到这里了。有什么不足的地方欢迎补充。文章大多数内容来自:
求职广告:本人实习生,现在急需一份工作,杭州南京合肥的都可以。对我感兴趣的可以私聊我 0.0。谢谢~~~
网友评论