#pragma mark - as/类型转换
as? / as! 需要根据前面的返回值决定 有?证明可选,可能为空:需要弱解包 没有?证明一定有值:大胆解包

as? 前面的结果是可选的 if let / guard let 一定用as?
as! 前面的结果一定有值
as NSString -> String / NSArray -> [] NSDictionary -> [] 因为底层做了结构体和OC对象的桥接
什么时候需要类型转换
1、将父类转换为子类
2、因为子类的属性和方法比父类多
3、转化有风险、如果没有对应的属性和方法会崩溃
4、参与计算的变量需要使用 "!解包" 因为参与计算 必须要保证有值

#pragma mark - JSON序列化

Swift开发中JSON序列化会发生异常有三种处理方式
一:try? 解析成功就有值 失败为nil (推荐使用guard守护一下就可以了)
guard let json = try? JSONSerialization.jsonObject(with: data!, options: [])

二: try! 成功有值 失败崩溃(一定不要使用)
let json2 = try! JSONSerialization.jsonObject(with: data!, options: [])

三: 处理异常能够接收到错误信息 可以打印出来
do {
let json3 = try! JSONSerialization.jsonObject(with: data!, options: [])
print(json3)
} catch {//可以使用三方检测收集
print(error)
}

#pragma mark - 定义模型

1、定义模型的时候,如果是对象,其属性通常是可选的 (不用写构造函数,在需要的时候创建)

--如果是基本数据类型,不能是可选的,需要定义的时候设置初始值,否则KVC会崩溃
--private 类型的属性/方法 通过KVC不能赋值(崩溃) 是禁止外界访问的
使用KVC的方法(本质是OC的方法,再运行时给对象发消息)之前 应该调用super.init 保证对象实例化完成


OC开发 当字典中的键值对比模型中多的时候 需要重写 setValue:forUndefinedKey告诉系统找不到对应发键值对应该怎么办


#pragma mark - "必选属性" 开发中极少用到

下面的例子表示 创建对象的时候name一定有值不能为空
override init() {
//需要再调用super.init 方法之前为本类属性分配空间并且初始化
self.name = "张三"

super.init()
}

构造函数基础  :相当于OC中的alloc init
重载构造函数  : 函数名称相同 参数类型和个数不同
KVC构造函数  :对象的属性为可选/基本数据类型为必选,赋初始值/使用kvc赋值的属性不能为private
遍历构造函数  :判断条件/convenience
析构函数deinit :OC中的dealloc

#pragma mark - 便利构造函数(不负责对象的创建,所以能够返回nil) 开发中使用很少,都是用第三方框架
不能被重写,不能调用super
为控件创建分类的时候使用的

//1. 便利构造函数允许返回nil
正常的构造函数一定会创建对象
判断给定的参数是否符合条件,如果不符合条件,直接返回nil,不会创建对象,减少内存开销
//2. 只有便利构造函数中使用 self.init() 构造当前对象
有 convenience 关键字的构造函数用来检查条件的,不负责对象的创建
//3. 在便利构造函数中使用当前对象的属性,一定要在self.init() 之后

convenience init?(name: String, age: Int) {
if age > 200 {
return nil
}

//实例化当前对象
self.init() 注意:--->是self不是super
//执行到此处 self 才允许被访问,才能够访问到对象的属性
self.name = name
}

%取余结果的正负只跟%左边的正负有关 而且可以对小数取余(OC不可以)

 

模糊效果

iconImageView.image = UIImage(named: "1.png")

//效果类实例

let blurEffect = UIBlurEffect(style: .light)

//效果视图类的实例

let visualEffectView = UIVisualEffectView(effect: blurEffect)

visualEffectView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height)

//添加到背景图像(告诉系统imageView需要按照上述条件进行模糊化实现)

imageView.addSubview(visualEffectView)

//view.addSubview(visualEffectView) 添加到控制器的view上,所有添加到view上的视图都会被模糊化

更多内容--> 博客导航 每周一篇哟!!!

有任何关于iOS开发的问题!欢迎下方留言!!!或者邮件lieryangios@126.com 虽然我不一定能够解答出来,但是我会请教iOS开发高手!!!解答您的问题!!!

Swift开发常用知识点的更多相关文章

  1. IOS&swift开发常用的网站

    swift转OC:http://iswift.org/try OC转swift:https://www.myappconverter.com/ swift语言视频:http://space.bilib ...

  2. Android快速开发常用知识点系列目录

    项目构建 Android项目目录结构模板以及简单说明[简单版] Android Studio配置统一管理依赖版本号引用 Android多Module下的Application引用方式 APP开篇 An ...

  3. Web开发常用知识点 - PHP

    Ubuntu下面,如何用PHP代码获得系统的临时文件夹 用PHP方法 sys_get_temp_dir() 来取得系统的临时文件夹路径,比如Ubuntu下面,返回值为"/tmp".

  4. swift开发常用代码片段

    // 绑定事件 cell.privacySwitch.addTarget(self, action: #selector(RSMeSettingPrivacyViewController.switch ...

  5. Java开发常用知识点总结

    docker exec -it imageId redis-cli docker container ls -a docker rm containerId 复制目录&文件 cp -r /ro ...

  6. iOS开发——实用篇Swift篇&项目开发常用实用技术

    项目开发常用实用技术 实现拨打电话 要实现打电话功能,最简单最直接的方式便是:直接跳到拨号界面 (注意:这个需要真机调试,模拟器无效果)     UIApplication.sharedApplica ...

  7. 前端开发面试知识点大纲--摘自jackyWHJ

    前端开发面试知识点大纲:HTML&CSS:    对Web标准的理解.浏览器内核差异.兼容性.hack.CSS基本功:布局.盒子模型.选择器优先级及使用.HTML5.CSS3.移动端适应 Ja ...

  8. 《Swift开发指南》

    <Swift开发指南> 基本信息 作者: 关东升    赵志荣 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115366245 上架时间:2014-8-5 出版日期:20 ...

  9. JAVA常用知识点及面试题总结

    1. String.StringBuffer.StringBuilder三者区别? (1)三者在执行速率上的比较: String<StringBuffer<StringBuilder 原因 ...

随机推荐

  1. 浏览器播放rtsp流媒体解决方案

    老板提了一个需求,想让网页上播放景区监控的画面,估计是想让游客达到未临其地,已知其境的状态吧.    说这个之前,还是先说一下什么是rtsp协议吧. RTSP(Real Time Streaming ...

  2. StringTokenizer使用笔记

    StringTokenizer 基本使用 笔者最近在做算数表达式的逆波兰式转换和解析,原始表达式为String类型,在使用StringTokenizer 之前笔者的解决思路是 将原始表达式->转 ...

  3. C++ 大作业 超市收银系统

    #include<iostream> #include<fstream> #include<string> #include<iomanip> #inc ...

  4. python求职Top10城市,来看看是否有你所在的城市

    前言 从智联招聘爬取相关信息后,我们关心的是如何对内容进行分析,获取用用的信息. 本次以上篇文章“5分钟掌握智联招聘网站爬取并保存到MongoDB数据库”中爬取的数据为基础,分析关键词为“python ...

  5. iOS tableView移除某一行的分割线 让分割线宽度为整个cell的宽度

    移除tableViewCell中某一行的分割线 有2种方法 1. 移除系统的分割线,自己定义每行的分割线 self.tableView.separatorStyle = UITableViewCell ...

  6. 8.Java 加解密技术系列之 PBE

    Java 加解密技术系列之 PBE 序 概念 原理 代码实现 结束语 序 前 边的几篇文章,已经讲了几个对称加密的算法了,今天这篇文章再介绍最后一种对称加密算法 — — PBE,这种加密算法,对我的认 ...

  7. Linux常用网络测试命令

    Linux常用网络测试命令 1. ifconfig     可以使用ifconfig命令来配置并查看网络接口的配置情况.    例如: (1) 配置eth0的IP地址, 同时激活该设备. #ifcon ...

  8. OpenStack命令 创建网络和路由管理

    1.登陆用户 :tdy(前提条件创建了tdy用户) 编写登陆用户tdy用户 脚本文件  user-operc.sh user-operc.sh : 登陆用户tdy: $ source user-ope ...

  9. 20个php框架

    对于Web开发者来说,PHP是一款非常强大而又受欢迎的编程语言.世界上很多顶级的网站都是基于PHP开发的.本文我们来回顾一下20个2014年最优秀的PHP框架. 每一个开发者都知道,拥有一个强大的框架 ...

  10. xampp教程(一):xampp下载,安装,配置,运行PHP的web项目

    本来没有想着弄PHP,但是有同学叫我帮忙启动一下一个PHP写的后台.着实需要去学习一下. 想着安装xampp软件,一个集合了多个服务器,多个数据库,多个后台语言的管理软件. 一.xampp下载 二.安 ...