首页 > 其他分享 >iOS开发Swift-枚举

iOS开发Swift-枚举

时间:2023-08-25 17:59:28浏览次数:46  
标签:case Arith enum iOS 枚举 let print Swift

枚举:一组相关的值定义了一个共同的类型,使你可以在代码中以类型安全的方式来使用这些值。

1.枚举语法

//枚举成员不会被赋予默认的整型值。成员本身就是完备的值,类型为CompassPoint。
enum CompassPoint {
    case north
    case south
    case east
    case west
}
//或者
enum Planet {
    case mercury, venus, earth
}

2.枚举的使用

var direction = CompassPoint.west
//direction: 已被推断类型,所以下次给他赋值的时候:
direction = .east

3.使用Switch语句匹配枚举值

direction = .south
switch direction {
    case .north:
        print("north")
    case .south:
        print("south")
    case .east:
        print("east")
    case .west:
        print("west")
}
//强调判断枚举的全部成员,如果没有判断全部成员则报错。所以在不需要判断全部成员时使用default。
switch direction {
    case .north:
        print("north")
    default:
        print("其他")
}

4.枚举成员的遍历

enum CompassPoint: CaseIterable {
//                         CaseIterable :  协议
    case coffee, tea, juice
}
let number = CompassPoint.allCases.count
//                                    allCases:包含所有枚举成员的集合方法
print("\(number)")

//或者
for com in CompassPoint.allCases{
    print(com)
}

5.关联值

enum Barcode {
    case upc(Int, Int, Int, Int)
    case qrCode(String)
}
var product = Barcode.upc(8, 85909, 51226, 3)
product = .qrCode("ABCDEFG")

 

switch product {
    case .upc(let n, let m, let p, let c):
        print("upc:\(n), \(m), \(p), \(c)")
    case .qrCode(let pc):
        print("QR code:\(pc).")
}
//简洁后:
switch product {
    case let .upc(n, m, p, c):
        print("upc:\(n), \(m), \(p), \(c)")
    case let .qrCode(pc):
        print("QR code:\(pc).")
}

6.原始值

原始值:定义枚举时被预先填充的值。

enum ASCIICharacter: Character {
    case tab = "\t"
    case lineFeed = "\h"
    case carriageReturn = "\r"
}

7.原始值的隐式赋值

(1)整数为原始值时,隐式赋值递增1。未设置原始值时,默认为0,之后递增1.

enum Planet: Int {
    case m = 1, n, r, j   //只为m赋原始值1
}
var x = Planet.n     //创建枚举变量x,   x的值为n
var y = x.rawValue    //通过rawValue属性来获取枚举的原始值
print(y)    //y的值为2

(2)字符串为原始值,隐式赋值为枚举成员的名称。

enum CompassPoint: String {
    case north, south, east, west   //他们的原始值为"north", "south", "east", "west"
}

8.使用原始值初始化枚举实例

let poss = Planet(rawValue: 7)
//poss:返回名称。如果没有则返回nil。     7:要查找的值。

9.递归枚举

enum Arith {
    case number(Int)
    indirect case add(Arith, Arith)   //indirect :可递归
    indirect case mul(Arith, Arith)
}
//简化
indirect enum Arith {    //indirect :所有成员可递归
    case number(Int)
    case add(Arith, Arith)
    case mul(Arith, Arith)
}
//使用
let five = Arith.number(5)
let four = Arith.number(4)
let sum = Arith.add(five, four)
let product = Arith.mul(sum, Arith.number(2))

 

标签:case,Arith,enum,iOS,枚举,let,print,Swift
From: https://www.cnblogs.com/lysboke/p/17657599.html

相关文章

  • iOS开发Swift-闭包
    1.闭包表达式语法{(参数)->return类型in//内容}letnames=["C","A","E","B","D"]funcback(_s1:String,s2:String)->Bool{returns1>s2//(B>A,C>B)}//闭包后:varreversedN......
  • iOS开发之--调用打电话,发邮件,发短信的系统功能的代码
    1、调用自带mail[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"mailto://[email protected]"]];2、调用电话phone[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"tel://8008808888"]];NSMutableString*str=[[NSMutable......
  • iOS开发之--TableViewCell重用机制避免重复显示问题
    常规配置如下当超过tableView显示的范围的时候后面显示的内容将会和前面重复//这样配置的话超过页面显示的内容会重复出现-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath{//定义唯一标识staticNSStrin......
  • iOS开发之--苹果个人开发者账号如何升级成公司账号
    1.拨打苹果针对中国区开发者的咨询服务热线:40067018552.简单向对方(中文不太标准,但听懂没问题)说明意图后,会要求提供:(1)之前申请IDP时purchaseform上的personID,EnrollmentID(2)开发者账号,3.对方会直接帮忙升级账户届时会需要提供一些公司相关的资料传真过去,包括:《企业法......
  • iOS开发之--iOS APP打包的时候出现的四个选项
    此为打ipa或发包时的选项,有四:一、个人账号发包所选;   显然,签名并打包程序来发布到iOSAppStore,是个人账户发包所选。二、打云测ipa包;   发布蒲公英内测、云测等所需的ipa,就选这个来打包,注意,要用发布证书;   官网解释:Todistributeyourapptouserswithdesig......
  • iOS开发之--沙盒的操作
    iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么.documents,tmp,app,Library。(NSHomeDirectory())手动保存的文件在documents文件里Nsuserdefaults保存的文件在tmp文件夹里1、Documents目录:您应该将所有的应用程序数据文......
  • iOS开发之--从URL加载图片
    +(UIImage*)imageFromURLString:(NSString*)urlstring{//Thiscallissynchronousandblockingreturn[UIImageimageWithData:[NSDatadataWithContentsOfURL:[NSURLURLWithString:urlstring]]];}直接转化一下就可以直接拿到图片!作者:稻草......
  • ios开发之 -- xib关联自定义view
    在xib下使用自定义的view,因为很多时候,可能幸亏自顶一个view,然后在view里面填充控件,但是需要重写很多无用的代码,而且很容易出错不说,还很好工作量,使用xib的话,分钟搞定一个view,话不多说,步骤如下:1,先创建一个view2,创建一个xib3,"File'sOwner"的class继承为:MyView(即自定义创建的视图......
  • ios开发之 -- UIView总结
    如果想调用某个类的某个方法可以写成这样,这个方法来自NSObject类performSelector:performSelector:withObject:performSelector:withObject:withObject: 实际调用[selfperformSelector:@selector(displayViews)withObject:nilafterDelay:1.0f];有三个方法分别是//父视图......
  • ios 开发之 -- UILabel的text竖行显示
    让UILabel的内容竖行显示,我经常用一下两种方式:第一种:使用换行符\nlabel.text=@"请\n竖\n直\n方\n向\n排\n列";label.numberOfLines=[label.textlength];第二种:使用lineBreakMode属性label.text=@"请竖行显示";label.lineBreakMode=NSLineBreakByWordWrapping;//换行模......