一、使用 可选链式 调用代替强制展开

//当声明一个属性时,将属性类型设置为可选类型: 好处: 当可选类型的属性被赋予初始值时,系统调用初始值;当可选类型属性没有赋予初始值时,系统只会调用失败;如果属性强制展开,就会崩溃

// 如果属性为一般类型,则必须赋予初始值

struct Point {

var width : Int = 0

}

class Person {

var name : String = ""

var age : Int?       //可选类型, 可以不赋值

var po : Point? = Point.init()   //赋值

}

//调用

var person = Person.init()

person.name = "adsf"

print(person.name)

print(person.age)

//print(person.po!.width)   //展开,只有赋有初始值,展开才不会报错

person.po?.width = 1000

二、类型匹配

1.检查类型  is

var array = [1,2,"10","88",90,100]

var strNum = 0

var intNum = 0

for i in array {

if i is Int{

intNum += 1

}

if i is String {

strNum += 1

}

}

print(strNum,intNum)    //  2  4

 2.向下转型  as? 或 as!

//NSMutableArray > NSArray > Array

//可变类型-->不可变-->swift

var arr = NSMutableArray.init(capacity: 0)

arr.addObject(1)

arr.addObject(2)

let arr2 = arr as NSArray

let arr3 = arr2 as Array     //最终arr3 变成swift中的数组类型

print(arr3)      

3.Any 和 AnyObject :

//a.AnyObject 可以表示任何类类型的 实例

//b.Any 可以表示任何类型,包括函数类型。

var array6 : [AnyObject] = [1,2,3,4,"io"]

print(array6)

三、扩展

//1.扩展语法

extension Int {

//2.属性扩展 (一定有返回值的)

var a : Int {

return self * 10

}

//3.方法扩展

func age() -> Void{

print("age")

}

}

//使用拓展

var ss : Int = 5

print(ss)

print(ss.a)

ss.age()

4.如果给父类扩展,则子类同样可以获取到

例:

class Student{

var name = ""

}

class Xiao: Student {

var age = 2

}

//扩展父类

extension Student {

func eat() -> Void{

print("eat")

}

}

//调用

var stu = Student.init()

stu.eat()

var xiao = Xiao.init()

xiao.eat()  //子类可以调用父类的 拓展的方法

swift -- as / 扩展的更多相关文章

  1. 6.Swift协议|扩展|访问权限|异常调试|类型转换|运算函数|ARC|类类型初试化器|值类型初始化器

    1. 协议(Protocol):与OC之间唯一不同的是Swift中的协议不管是属性还时方法全部是必须实现的 /** protocol*/ protocol FullNamed { /** 计算属性申明 ...

  2. Swift - 类扩展(extension)

    Swift语言的类扩展是一个强大的工具,我们可以通过类扩展完成如下事情: 1,给已有的类添加计算属性和计算静态属性 2,定义新的实例方法和类方法 3,提供新的构造器 4,定义下标脚本 5,是一个已有的 ...

  3. Swift中扩展的使用

    import Foundation /* 扩展 1.使用扩展添加属性, 方法, 可变方法, 构造器, 下标, 嵌套类型 2.可以使一个已有类型符合一个或者多个协议 3.扩展与OC的Category类似 ...

  4. swift学习笔记4——扩展、协议

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  5. Swift基础--Swift中的分类以及在分类中扩展init方法的注意事项

    Swift中的分类 1.创建一个空的swift文件 2.关键字extension,格式: extension 要扩展的类名 {} extension UIButton { } Swift中扩展init ...

  6. swift 学习- 23 -- 扩展

    // 扩展 就是为一个已有的 类, 结构体, 枚举, 或者 协议类型添加新功能, 这包括在没有权限获取 原始代码的情况下 扩展类型的能力 (即 逆向建模), 扩展和 OC 中的分类类似, (与 OC ...

  7. Swift 学习笔记十五:扩展

    扩展就是向一个已有的类.结构体或枚举类型加入新功能(functionality).扩展和 Objective-C 中的分类(categories)相似.(只是与Objective-C不同的是,Swif ...

  8. Swift-----类型转换 、 嵌套类型 、 扩展 、 协议 、 访问控制

    使用is和as操作符判断和转换数组中的对象类型 1.1 问题 类型转换可以判断实例的类型,也可以将实例看做是其父类或者子类的实例.在Swift中使用is和as操作符实现类型转换. 本案例定义一个媒体类 ...

  9. swift开源项目精选

    Swift 开源项目精选-v1.0 2016-03-07 22:11 542人阅读 评论(0) 收藏 举报  分类: iOS(55)   Swift(4)    目录(?)[+]   转自 http: ...

随机推荐

  1. sitemap.xml 的 几个东西

    https://github.com/PureKrome/SimpleSitemap/wiki/Sitemap-Index-example  简单类实现 支持sitemapindex 有说明向导 ht ...

  2. Eclipse Sort Members默认之后恢复的方法

    alt+shift+s -- > m CRLF 默认一种排序之后,对话框就再也出不来了: 使用这样的方法: window - preference - Java | Java dialogs | ...

  3. web前端性能调优(二)

    项目经过第一波优化之后APP端已基本已经符合我们的要求了,但是TV端还是反应比较慢,页面加载和渲染都比较慢了一点,我觉的还是有必要在进行一些优化,经过前面的优化,我们的优化空间已经小了一部分,不过还是 ...

  4. 同步、异步、阻塞、非阻塞IO

    在网上看到一篇对这四个概念比较清晰的分析的文章:http://blog.csdn.net/historyasamirror/article/details/5778378.结合自己一直在学习Java ...

  5. 微信前端面试题----js实现LazyMan

    这是微信小程序的一道面试题,题目是这样的: 实现一个LazyMan,可以按照以下方式调用:LazyMan("Hank")输出:Hi! This is Hank! LazyMan(& ...

  6. 我的Java笔记

    第一章 一 计算机程序:一系列有序的指令集合. 二 java语言分为三个领域 javaSE java技术核心(桌面应用程序)qq 百度云 javaEE 企业版(面向internet的应用程序)京东 淘 ...

  7. HDU 3783 ZOJ

    ZOJ Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  8. PrintWriter用法简析

    public class PrintWriterextends Writer 向文本输出流打印对象的格式化表示形式.此类实现在 PrintStream 中的所有 print 方法.它不包含用于写入原始 ...

  9. Linux 6.4 partprobe出现warning问题

    今天在给服务器做LVM的时候(服务器的系统是CentOS 6.3),用fdisk分区之后,用w写入分区表的时候,就提示Command (m for help): wThe partition tabl ...

  10. HTTP笔记(一)

    最近在看<图解HTTP>.全书以图解的形式生动形象的讲解了HTTP协议.本文是根据该书整理的笔记,方便以后回顾. HTTP的诞生 HTTP又称超文本传输协议(HTTP,HyperText ...