Stanford CS193p iOS开发课程笔记(三)

2015年12月4日,完成了第四课"More Swift and Foundation Frameworks"的学习

这一课无代码演示,主要讲解了一些Swift的基本语法知识,好在之前已经打下了基础,没有在这一课的学习中较为顺利,但关于初始化器和懒加载以及will set,did set.方面的知识还要继续进行补充

本课的主要知识点如下

Stanford CS193p iOS开发课程笔记(三)_第1张图片
2.png
  • 可选类型其实就是个枚举
enum Optional {   ///T为关联值得类型
        case None
        case Some(T)
}
let x: String? = nil  相当于  let x = Optional.None

let x: String? = "hello"  相当于  let x = Optional.Some("hello")
  • 解包"!"就相当于一个Switch
switch x {
       case some(let value):y = value
       case None: //raise an exception
}//在None的情况下就会抛出异常
  • 遍历字典
for (ket , value) in xxx {
      print("\(key) = \(value)")
}
  • NSObject是OC中所有类的基类,swift中并没有一个这样的基类,但swift类也可以集成字NSObject

  • NSNumber是一个装数字的类,swift不会用到很多,因为swift是强类型语言

  • NSDate 储存日期的类

  • NSDate 比特包,里面是无类型的数据

  • swift中的数据结构
    class,struct,enum是swift数据结构中的三个基础块
    相同点:1.语法声明上很像 2.都有属性和函数 3.都可以有初始化构造器
    不同点:1.class是三种中仅有继承性质的 2.内省和转换(Introspection and casting)也是class独有的 3.class是引用类型. struct和enum是值类型

  • AnyObject主要用于兼容现有OC API和iOS代码,其是指向一个未知类的指针

我们会在哪里用到它?

var destinationViewController : AnyObject
var toolbarItems: [AnyObject]

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject)
func addConstraints(constranits: [AnyObject])
func appendDigit(sender: AnyObject)

class func buttonWithType(buttonType: UIButton) -> AnyObject

如何进行转换?

利用as强制转换

var destinationViewController : AnyObject
let calcVC = destinationViewController as CalculatorViewController

利用as?在转换前进行判断

if let calcVC = destinationViewController as? CalculatorViewController {...} 

[AnyObject]数组的转换

var toolbarItems: [AnyObject] 
for item in toolbarItems {
      if let toolbarItems = item as? UIBarButtonItem {
      }
}
...or...
for toolbarItem in toolbarItems as [UIBarButtonItem] {}//直接将整个[AnyObject]数组转换成了[UIBarButtonItem]

你可能感兴趣的:(Stanford CS193p iOS开发课程笔记(三))