首页 > 其他分享 >swift--使用 is 和 as 操作符来实现类型检查和转换 / AnyObject与Any的区别

swift--使用 is 和 as 操作符来实现类型检查和转换 / AnyObject与Any的区别

时间:2023-08-22 15:36:58浏览次数:39  
标签:AnyObject -- SeaAnimals terricole let myAry print swift any

声明几个类:

//动物类
class Animal{
    
}
//陆地动物类
class terricole: Animal {
    
}
//海洋动物类
class SeaAnimals: Animal {
    
}

1,is 用来做类型检查

let cat = terricole()
        let fish = SeaAnimals()
        let arr = [cat,fish]
        
        for anima in arr {
            if anima is terricole{
                print("这是陆地动物")
            }else if anima is SeaAnimals{
                print("这是海洋动物")
            }
        }

2, as 用来做类型转换(注:如果不确定类型转换能否成功,可以在 as 后面加问号 “?”)

for animas in arr {
            if let c = animas as? terricole{
                print("这是陆地动物")
            }else if let w = animas as? SeaAnimals{
                print("这是海洋动物")
            }
        }

 

3,AnyObjective:代表任何class类型的对象实例

let dogs = terricole()
        let shark = SeaAnimals()
        let arrs:[AnyObject] = [dogs,shark]
        
        for animaes in arrs {
            if let d = animaes as? terricole{
                print("这是个爬行动物")
            }else if let e = animaes as? SeaAnimals{
                print("这是个水生动物")
            }
        }

 

4, Any:范围更广,代表处函数外任何类型的实例

var myAry:[Any] = [Any]()
        myAry.append(1)
        myAry.append("hero11223")
        myAry.append(terricole())
        myAry.append(SeaAnimals())
        print("\(myAry)")
        for any in myAry {
            switch any {
            case let any as Int:
                print("这是个int类型")
            case let any as String:
                print("这是个String类型")
            case let any as terricole:
                print("这是个陆地动物类型")
            case let any as SeaAnimals:
                print("这是个水生动物类型")
            default:
                print("这是个未知类型")
            }
        }

打印如下:

swift--使用 is 和 as 操作符来实现类型检查和转换 / AnyObject与Any的区别_fish

 

作者:稻草人11223


标签:AnyObject,--,SeaAnimals,terricole,let,myAry,print,swift,any
From: https://blog.51cto.com/u_13188203/7190226

相关文章

  • ios开发之--pop到指定页面
    1推出到根视图控制器[self.navigationControllerpopToRootViewControllerAnimated:YES];2推出到指定的视图控制器 for(UIViewController*controllerinself.navigationController.viewControllers){if([controllerisKindOfClass:[AViewControllerclass]]){......
  • 代码简洁之道:对象转换神器MapStruct
    在我们日常开发的程序中,为了各层之间解耦,一般会定义不同的对象用来在不同层之间传递数据,比如xxxDTO、xxxVO、xxxQO,当在不同层之间传输数据时,不可避免地经常需要将这些对象进行相互转换。今天给大家介绍一个对象转换工具MapStruct,代码简洁安全、性能高,强烈推荐。MapStruct简介MapSt......
  • ios开发之--ios11适配:TableView的heightForHeaderInSection设置高度无效/UISearchBar
    更新到ios11,然后使用x-code9运行项目,发现tableview的-(CGFloat)tableView:(UITableView*)tableViewheightForHeaderInSection:(NSInteger)section方法不走,所以页面也华丽丽的变成了一排的cell,通过查看文档和资料,原来是ios11默认开启self-sizing,把这个属性关系即可,具体代码如下:sel......
  • 用案例带你认识决策树,解锁洞察力
    本文分享自华为云社区《【机器学习|决策树】利用数据的潜力:用决策树解锁洞察力》,作者:计算机魔术师。决策树1.1分类决策树是一种基于树形结构的分类模型,它通过对数据属性的逐步划分,将数据集分成多个小的决策单元。每个小的决策单元都对应着一个叶节点,在该节点上进行分类决......
  • ios开发之--NSString和NSArray互转
    将string字符串转换为array数组NSArray*array=[StrcomponentsSeparatedByString:@","];//分隔符逗号将array数组转换为string字符串 NSString*tempString=[mutableArraycomponentsJoinedByString:@","];//分隔符逗号作者:稻草人11223......
  • swift--触摸(UITouch)事件(点击,移动,抬起)
    触摸事件:UITouch:一个手机第一次点击屏幕,会形成一个UITouch对象,知道离开销毁。表示触碰。UITouch对象能表明当前手指触碰的屏幕位置、状态,状态分为开始触碰、移动、离开。具体方法介绍如下:1.overridefunctouchesBegan(_touches:Set<UITouch>,withevent:UIEvent?)通知调用者当......
  • ios开发之--使用toolbar调整item之间的间隔
    toolbar的item有很多种样式,其实经常使用的就几种,UIBarButtonSystemItemFixedSpace木棍:可以理解为固定的长度UIBarButtonSystemItemFlexibleSpace 弹簧:可以理解为弹性的长度 UIBarButtonItem有两个barbutton的格式  添加到toolbaritems=@[木棍,按钮,弹簧,按钮,木棍];木棍是固定长度......
  • java实现大文件上传示例
    ​ 一、功能性需求与非功能性需求要求操作便利,一次选择多个文件和文件夹进行上传;支持PC端全平台操作系统,Windows,Linux,Mac支持文件和文件夹的批量下载,断点续传。刷新页面后继续传输。关闭浏览器后保留进度信息。支持文件夹批量上传下载,服务器端保留文件夹层级结构,服务器端......
  • swift--添加新手引导页
    swift和oc逻辑上都是一样的,只是写法不一样,可以使用一个view,也可以使用一个viewController,两种都可以的,使用view注意初始化的时候给他一个frame,vc的话,直接在本控制器里面写控制即可! 1,创建一个vc,然后在里面初始化一个scrollview,升值contentsize为3*页面宽度,然后添加图片,最后可以实......
  • sql日期去掉-
    selectreplace(d_day,'-','') fromfc_sr_day_sale_ad_order;语法REPLACE(''string_replace1'',''string_replace2'',''string_replace3'')参数''string_replace1'......