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

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

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

本课的主要知识点如下

2.png
  • 可选类型其实就是个枚举
enum Optional<T> {   ///T为关联值得类型
        case None
        case Some(T)
}
let x: String? = nil  相当于  let x = Optional<String>.None

let x: String? = "hello"  相当于  let x = Optional<String>.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]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容