swift基本体验
Swift初体验
1. 导入框架
2. 定义标识符: let/var
3. 语句结束时;可以省略
4. print()
5. let/var
6. 逻辑分支
7. 循环使用
// 1.Swift中如何导入框架
/*
OC导入框架: #import <UIKit/UIKit.h>
*/
import UIKit
// 2.定义标识符
/*
OC定义标识符:
int a = 20;
a = 10;
Swift定义标识符
1> 定义标识符时,必须明确的指定该标识符是一个变量还是一个常量
2> 使用var定义变量
3> 使用let定义常量
4> 定义格式: let/var 标识符名称 : 标识符类型 = 赋值
*/
// 2.1.定义变量
var a : Int = 20
a = 10
// 2.2.定义常量
let b : Double = 3.14
// b = 2.44 错误写法
// 3.在swift中,如果一行当中只有一条语句,那么语句结束时 ; 可以省略
// 4.打印内容
/*
OC打印内容:
NSLog(@"Hello World");
NSLog(@"%d", a);
*/
print("hello world")
print(a)
1.注意一:
在开发中,优先使用常量(let). 只有发现标识符需要修改时,再使用变量
目的: 防止在其它不希望修改的地方,不小心将值修改掉
2.注意二:
常量的本质: 指向的内存地址不可以修改,但是可以通过内存地址找到对应的对象,之后修改对象内部的属性
OC中创建对象:
UIView *view = [[UIView alloc] init];
Swift中创建对象:
类型()
// var a : Int = 20
// a = 10
/*
var view : UIView = UIView()
view = UIView()
*/
// 1> 指向的内存地址不可以修改
let view : UIView = UIView() // 0x100
// view = UIView() // 0x200
// 2> 但是可以通过内存地址,找到对应的对象,之后修改对象内部的属性
view.alpha = 0.5
view.backgroundColor = UIColor.blue
Swift UIKit的基本使用
// 需求: 创建UIView对象,并且在UIView中添加UIButton
// 1.创建UIView对象
// OC : [[UIView alloc] initWithFrame:CGRect]
let rect = CGRect(x: 0, y: 0, width: 100, height: 100)
let view : UIView = UIView(frame: rect)
// 2.给View设置属性
view.backgroundColor = UIColor.red
// 3.创建UIButton对象
let btn : UIButton = UIButton()
// 4.给btn设置属性
// 4.1.设置btn的frame
btn.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
// 4.2.设置btn的背景颜色
btn.backgroundColor = UIColor.orange
// 4.3.设置btn的文字(了解)
// Swift枚举类型:
// 方式一: 如果可以根据上下文语法推断出该枚举的类型可以直接 .具体类型
// 方式二: 上下文推断不出类型, 枚举类型.具体类型
btn.setTitle("按钮", for: .normal)
// 5.将btn添加到UIView中
// 在swift中调用方法,统一使用 点语法
view.addSubview(btn)
类型推导
1> 如果在定义一个标识符时,有直接给该标识符进行赋值. 那么可以将标识符后面的类型省略掉
2> 编译器会根据我们后面赋值的类型,推导出前面标识符的类型, 这个过程就叫做类型推导
3> 可以通过 option + 鼠标左键 来查看标识符的类型
let a = 20
var b = 2.44
let view = UIView()
let btn = UIButton()
let m = 20
let n = 10.5
// let result = m + n 错误写法
// 将Int类型转成Double: Double(标识符)
// 将Double类型转成Int : Int(标识符)
let result1 = Double(m) + n
let result2 = m + Int(n)
let a : Double = 2.44
let b : CGFloat = 3.55
let result = a + Double(b)
OC的用法
int a = 20
if (a > 0) {
}
if (a) {
}
Swift中if和OC的区别
1> if后面的()可以省略掉
2> 没有非0(nil)即真
Bool(true/false)
let a = 10
if a > 0 {
print("a大于0")
}
if a != 0 {
print("a不等于0")
}
// else if的使用
let score = 88
if score < 0 || score > 100 {
print("不合理的分数")
} else if score < 60 {
print("不及格")
} else if score < 80 {
print("及格")
} else if score < 90 {
print("良好")
} else {
print("优秀")
}
Switch-Case
1.switch的基本使用
1> switch()可以省略
2> case结束可以不加break
2.基本使用补充
1> case后面可以跟上多个条件
2> 如果希望产生case穿透,可以在case结束时fallthrough
3.可以判断多种类型
1> 浮点型
2> 字符串
3> 区间类型
1.switch基本使用和OC的区别
1> switch后面的()可以省略
2> case语句结束时,可以不加break
let sex = 1
// sex 0 : 男 1 : 女
switch sex {
case 0:
print("男")
case 1:
print("女")
default:
print("其它")
}
// 2.基本用法补充
// 1> 在swift中,switch后面case可以判断多个条件
// 2> 如果希望case结束时,产生case穿透.case结束时,加上fallthrough
switch sex {
case 0, 1:
print("正常人")
fallthrough
//case 3:
// print("人妖")
// fallthrough
default:
print("非正常人")
}
// 3.switch判断其它类型
// 3.1.判断浮点型
let m = 3.14
switch m {
case 3.14:
print("和π相等")
default:
print("和π不相等")
}
// 3.2.判断字符串
let a = 20
let b = 30
let oprationStr = "*"
var result = 0
switch oprationStr {
case "+":
result = a + b
case "-":
result = a - b
case "*":
result = a * b
case "/":
result = a / b
default:
print("不合理的操作符")
}
// 3.3.判断区间类型
/*
区间
1> 半开半闭区间 0~9 0..<10
2> 闭区间 0~9 0...9
错误写法 1~9 0<.<10
正确写法 1~9 1..9/1..<10
*/
let score = 88
switch score {
case 0..<60:
print("不及格")
case 60..<80:
print("及格")
case 80..<90:
print("良好")
case 90...100:
print("优秀")
default:
print("不合理的分数")
}
// Swift中for循环现在只支持区间遍历
// 0..<10/0...9
for i in 0..<10 {
print(i)
}
for i in 0...10 {
print(i)
}
// 打印10次hello world
// 在swift开发中,如果一个变量/常量暂停不会使用,那么可以使用_来代替
for _ in 0..<10 {
print("hello world")
}
关于循环
OC中while循环
int a = 0
while (a < 10) {
a++
}
while (a) {
}
swift中while循环和OC区别
1> while后面()可以省略
2> 没有非0(nil)即真 Bool(true/false)
var m = -1
while m < 10 {
m += 1
print(m)
}
repeat {
m -= 1
print(m)
} while m > 0
swift基本体验的更多相关文章
- swift初体验
swift是一门类型安全的语言,同样也是基于c语言 那么c语言的一些类型也是实用的,不同的是:swift声明变量和常量是不一样的 let:用来修饰常量:var用来修饰变量 e.g: let num=1 ...
- Swift初体验之图案锁
这篇在应用上貌似没有价值,貌似我写了好多实际上都没有价值,这里贴出来就是分享下. 自己写swift好多天了,感觉好多东西还是不太懂,边学边做,互勉! 先上图: 代码:下载
- Swift初体验(两)
// 写功能初体验 func getMyName(firstName first:String, lastName last:String) -> String{ //return first ...
- Swift初体验之HelloWord+苹果Swift编程语言新手教程【中文版】
AppDelegate.swift : <span style="font-size:24px;"><strong>// // AppDelegate.sw ...
- Swift初体验(三)
/*******************************************************************************/ // 协议 protocol Des ...
- Swift初体验 (一)
// 声明一个常量 let maxNumberOfStudents: Int = 47 // 声明一个变量,假设没有在声明的时候初始化,须要显示的标注其类型 var currentNumberOfSt ...
- ios -- 教你如何轻松学习Swift语法(一)
目前随着公司开发模式的变更,swift也显得越发重要,相对来说,swift语言更加简洁,严谨.但对于我来说,感觉swift细节的处理很繁琐,可能是还没适应的缘故吧.基本每写一句代码,都要对变量的数据类 ...
- Swift语法基础入门一(适合有C, OC开发人员)
Swift开发体验 /*: 创建对象 * OC: alloc initWithXXX 方法 * Swift: (xxx:) */ /*: 调用方法 * OC: [UIColor redColor]; ...
- 第20月第18天 小码哥swift
1. 9月12日第一次更新 第二篇玩转[斗鱼直播APP]系列之界面分析 第三篇玩转[斗鱼直播APP]系列之项目部署 第四篇玩转[斗鱼直播APP]系列之获取APP图片资源 第五篇玩转[斗鱼直播APP]系 ...
随机推荐
- Mybatis 和 Solon 勾搭在一起,也是个漂亮组合
故事相关的源码 https://gitee.com/noear/solon_demo/tree/master/demo08.solon_mybatis 故事开讲 Solon 是Java世界里一个新的极 ...
- drop、truncate、delete功能介绍和三者间区别
一.delete 1.delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表 ...
- 3.MongoDB恢复探究:为什么oplogReplay参数只设置了日志应用结束时间oplogLimit,而没有设置开始时间?
(一)问题 在使用MySQL数据库binlog日志基于时间点恢复数据库时,我们必须要指定binlog的开始位置和结束位置,而在MongoDB里面,如果使用oplog进行恢复,只有oplogLimit参 ...
- node.js 模拟自动发送邮件验证码
node.js 模拟自动发送邮件验证码 引言 正文 1. QQ邮箱设置 2. 安装nodemailer 3.配置信息 4.综合 5.讲解 结束语 引言 先点赞,再看博客,顺手可以点个关注. 微信公众号 ...
- Vue3.0数据响应式原理
在vue2版本中响应式使用的是ES5对象的操作,通过遍历对象Object.defineProperty属性值的变化,实现监听数据 在3.0中使用的ES6版本的Proxy代理对象方式来实现数据的监听,省 ...
- Java中实现十进制数转换为二进制的三种方法
第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒着依次排列,就构成了转换后的二进制数 ...
- 手把手教你使用VUE+SpringMVC+Spring+Mybatis+Maven构建属于你自己的电商系统之vue后台前端框架搭建——猿实战01
猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,跟着教程走下来,变身猿人找到工作不是 ...
- NOIP2007 树网的核 [提高组]
题目:树网的核 网址:https://www.luogu.com.cn/problem/P1099 题目描述 设 T=(V,E,W)T=(V,E,W) 是一个无圈且连通的无向图(也称为无根树),每条边 ...
- 基于 abp vNext 微服务开发的敏捷应用构建平台 - 设计构想
许多中小企业的管理模式都是在自身的发展过程中不断摸索,逐步建立起来的,每一家都有其独有的管理模式,而且随着企业的不断发展,管理模式也在不断变化中.企业在发展壮大的过程中离不开信息化系统的支撑,企业在构 ...
- 精讲响应式WebClient第4篇-文件上传与下载
本文是精讲响应式WebClient第4篇,前篇的blog访问地址如下: 精讲响应式webclient第1篇-响应式非阻塞IO与基础用法 精讲响应式WebClient第2篇-GET请求阻塞与非阻塞调用方 ...