Swift(一,创建对象,类型推导,基本运算,逻辑,字符串,数组,字典)
swift用起来刚开始感觉有点怪怪的,但用了一段时间觉得还是挺好用的,哈哈.毕竟都是要有一个过程的嘛.
我就写一些自己在使用swift的时候的注意点吧,如有不正之处,还请指正!
一.在开发中优先使用常量,只有发现该标识符需要修改的时候,再改成变量,这样做可使数据更安全,以防止队友不小心把你的值修改了.
二.创建一个对象的时候,比如创建一个UIView对象
//1.创建UIView对象
let rect : CGRect = CGRectMake(, , , )
let view : UIView = UIView(frame: rect)
//2.修改UIView内部属性
//2.1修改view的透明度
view.alpha = 0.5
//2.2 修改view的背景色
view.backgroundColor = UIColor.redColor() //3.创建UIButton对象
/*
在swift使用枚举类型,有2种方式
1.枚举的类型.具体的类型
2.直接点--> .具体的类型
*/
let btn : UIButton = UIButton(type: .Custom)
//4.修改btn的内部属性
btn.frame = CGRectMake(, , , )
btn.backgroundColor = UIColor.greenColor()
btn.setTitle("按钮", forState: .Normal) view.addSubview(btn) //5.在swift中也能这样添加一个按钮
let rect1 : CGRect = CGRectMake(, , , )
let btn1 : UIButton = UIButton(frame: rect1)
btn1.backgroundColor = UIColor.grayColor()
view.addSubview(btn1)
三.swift中的类型推导,首先swift是强类型语言,然后他的每个标识符都有自己的类型.注意的一点是,例如
//let a : Int = 10
//可直接写成
let a = var c = 1.44
c =
//修改后会把20当成20.0来看 所以不会报错 var b =
// b = 1.44 错误写法
四.swift中的基本运算需要注意的就是swift中没有隐式转换,所以当类型不同的时候不能运算,要先转换成同一类型:
1>Double -->Int Int (b)
2>Int -->Double Double(a)
五.逻辑分支中,有if,switch,guard,while,do While(do-->repeat)等,共同的地方都是能省去()
1>一,if后面的判断没有非0(nil)即真 二,if后面判断句必须有明确真假(Bool -->true / false)
2>一,switch的case后面不用加break,编译器会自动加. 二,case后面可以接多个判断条件,并且以","隔开 三,有时候需要穿透的话,自己在case后面加上fallThrough
switch比在OC中更强大的地方在于,它支持多种数据类型,包括 1--->浮点型; 2-->字符串; 3-->还能判断区间
半开半闭区间的表示方法:例如1..<10 --->[1 10)
闭区间的表示方法 : 例如 1...10 ---->[1 10]
这就不写demo了,用起来还是挺方便简单的.
3>guard翻译过来中文就是守卫,门卫的意思,它就是一层一层条件判断,全部通过后最后执行后面的的代码块,例如
let age =
let money =
let id = func online(money : Int,age :Int ,id :Int){
//1.判断年龄
guard age >= else{
print("回家去")
return
}
//2.判断是否带了身份证
guard id >= else{
print("回家拿身份证")
return
}
guard money >= else{
print("回家拿钱")
return
}
print("上机")
}
//调用的时候,最前面的参数不用传键值对,传个值就行
online(money,age :age ,id: id)
4>do While---->用法在swift里面把do换成repeat就行了.其他的和OC中差不多.
六.字符串的基本使用.例如
//1.定义字符串
//1.1 定义不可变字符串
let str = "hello world"
//1.2 定义可变字符串
var strM = "hello swift";
strM = "hello OC" //2.字符串的使用
//2.1 遍历所有字符串
for c in str.characters{
print(c)
}
//2.2 获取字符串的长度
let length = str.characters.count //3.字符串的拼接
//3.1 两个字符串直接的拼接
let str1 = "s"
let str2 = "j"
let str3 = str1 + str2
//3.2 字符串和其他标识符的拼接
let name = "cjh"
let sex = "man"
let person = "my name is \(name),is \(sex)"
//3.3 拼接过程格式化
let min = ;
let second = ;
let time = String(format: "%02d:%02d", arguments: [min, second])
字符串的截取,例如
let str = "www.baidu.com"
//1.方式一:将String类型转成NSString类型 as就可以进行转化
let header = (str as NSString).substringToIndex()
let footer = (str as NSString).substringFromIndex()
let range = NSMakeRange(, )
let middle = (str as NSString).substringWithRange(range) //2.方式二: 使用String类型的方法
let endIndex = str.startIndex.advancedBy()
let header1 = str.substringToIndex(endIndex) let startIndex = str.endIndex.advancedBy(-)
let footer1 = str.substringFromIndex(startIndex) let range1 = Range(start: endIndex.advancedBy(), end: startIndex.advancedBy(-))
let middle1 = str.substringWithRange(range1)
七.关于swift中的数组,基本用法倒是容易,我觉得要注意的就是当两个相同类型的数组需要合并的时候,直接相加就行了,但是当两个不同的类型的数组需要合并的时候,需要先自己转换类型为NSObject的类型了.例如
//1.定义数组
//1.1 定义不可变数组
let arr = ["a","b","c"]
//1.2 定义可变数组
var arrM = ["aaa","bbb"]
//2.对可变数组的基本操作
//2.1 添加元素
arrM.append("ccc")
arrM.append("ddd")
//2.2 删除元素
arrM.removeAtIndex()
print(arrM)
//2.3 修改元素
arrM[] = "zzz"
print(arrM)
//2.4 获取元素
arrM[] //3.遍历数组
//3.1 最基本的遍历方式
for i in ..<arr.count{
print(arr[i])
}
//3.2 遍历数组中的一部分元素
for i in ..<{
print(arr[i])
}
for name in arr[..<]{
print(name)
}
//3.3 for 增强遍历
for name in arr{
print(name)
}
//3.4 下标 和元素 都获取
for(index,name) in arr.enumerate() {
print(index)
print(name)
}
//4.数组的合并:如果两个数组类型一致,直接相加
let arr1 = ["abc","def"]
let arr2 = ["abc","aaaa"]
let arr3 = arr1 + arr2 //
//如果类型不一致,转换成NSObject,再遍历另一个元素全部加进去
let arr4 = [,,]
let arr5 = ["a","b"] var arr6 = [NSObject]()
arr6 = arr5 arr6.append("c") for name in arr4{ arr6.append(name) } print(arr6)
八.关于swift中的字典.
//1.定义字典
//1.1定义不可变字典
let dict1 = ["name":"jack","age":]
//1.2定义可变字典 var dict2 = ["sex":"man","country":"china","age":] //2.对字典的基本操作
//2.1 添加元素
dict2["name"] = "lucy"
dict2.updateValue(1.7, forKey:"height")
dict2
//2.2删除元素
dict2.removeValueForKey("sex")
//1.7 == dict2["height"]!
//("height",1.7) == dict2[0]
//let index = dict2["height",1.7] /*
还有一个方法
removeAtIndex(<#T##index: DictionaryIndex<Hashable, Value>##DictionaryIndex<Hashable, Value>#>)
官方文档是这样说的,借助百度翻译翻译结果如下
Used to access the key-value pairs in an instance of Dictionary<Key, Value>.
用于访问字典<键、值>的实例中的键值对。
Dictionary has two subscripting interfaces:
字典有两个操作界面:
Subscripting with a key, yielding an optional value:
下标有键,产生一个可选值:
v = d[k]!
Subscripting with an index, yielding a key-value pair:
下标有索引,产生一个键值对:
(k,v) = d[i]
*/
dict2.removeAtIndex(dict2.indexForKey("height")!) print(dict2)
//2.3修改元素
dict2["age"] =
print(dict2)
dict2["height"] = 1.8
print(dict2)
//2.4 获取元素
dict2["name"]
let v = dict2.indexForKey("height")
print(v) //3.遍历字典
//3.1 遍历字典中所有的key
for key in dict2.keys{
print(key)
}
//3.2 遍历所有的value
for value in dict2.values{
print(value)
}
//3.3 遍历键值对
for (key,value) in dict2{
print(key)
print(value)
}
//4.字典的合并 : 任何情况不能相加
let dict3 = ["name":"cjh","age":]
var dict4 = ["sex":"man","height":1.7]
for(key,value) in dict3{
dict4[key] = value
}
ok,就这样了.
奈文摩尔 16.5.11
Swift(一,创建对象,类型推导,基本运算,逻辑,字符串,数组,字典)的更多相关文章
- Swift学习(三)类型推导&基本运算&分支&循环
一.Swift中类型推导&基本运算 Swift中类型推导 如果一个标识符在定义时有直接赋值,那么可以根据后面赋值的类型,来推导出前面标识符的类型,这样前面标识符的(:类型)可以省略 查看标识符 ...
- Swift学习—字符串&数组&字典
字符串 OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC中字符串@"",Swift中字符串"" ...
- python基础入门--input标签、变量、数字类型、列表、字符串、字典、索引值、bool值、占位符格式输出
# 在python3 中: # nian=input('>>:') #请输入什么类型的值,都成字符串类型# print(type(nian)) # a = 2**64# print(typ ...
- IOS NS 字符串 数组 字典 文件 动态 静态 操作
ios 常用字符串的操作 //将NSData转化为NSString NSString* str = [[NSString alloc] initWithData:response e ...
- oc字符串+数组+字典操作题目
1. 判断中间目录是否存在 (10分) 比如 传入字符串 @"/home/qianfeng/oc.txt" 和 @"qianfeng" 返回:YES 传入字符串 ...
- Object-C 语法 字符串 数组 字典 和常用函数 学习笔记
字符串 //取子字符串 NSString *str1=@"今天的猪肉真贵,200块一斤"; NSString *sub1=[str1 substringFromIndex:4]; ...
- Matlab 之 字符串数组查找
Matlab的优势在于向量操作,字符串操作往往费时费力,但是如果能充分利用Matlab自带的一些函数,也可以取得不错的效果.下面就介绍一下字符串数组查找的小技巧. 字符串数组我通常会选择应用cell格 ...
- iOS开发零基础--Swift教程 可选类型
可选类型的介绍 注意: 可选类型时swift中较难理解的一个知识点 暂时先了解,多利用Xcode的提示来使用 随着学习的深入,慢慢理解其中的原理和好处 概念: 在OC开发中,如果一个变量暂停不使用,可 ...
- C++11 图说VS2013下的引用叠加规则和模板参数类型推导规则
背景: 最近在学习C++STL,出于偶然,在C++Reference上看到了vector下的emplace_back函数,不想由此引发了一系列的“探索”,于是就有了现在这篇博文. 前言: ...
随机推荐
- linux运维安全工具集合[持续更新中..]
lynis 安全漏洞检测工具 https://cisofy.com/download/lynis/ https://cisofy.com/files/lynis-2.2.0.tar.gz ...
- 更改Sublimetext3的主题文件,改变某些不喜欢的颜色
使用的主题是Monokai(SL),主题很好看,但是注释和内容选中的颜色看起来跟没有一个样,看起来很淡,所以稍微改一下主题文件的颜色.
- NuGet的使用和服务搭建
问题的由来 最近部门,在开发的时候遇到一个问题,现在有项目A B C三个项目,项目B和C分别提供了组件库由项目A直接引用.那么每次开打项目A获取最新后,同时还得打开项目B C获取最新然后编译一次.抛开 ...
- oracle10 权限角色
管理权限和角色 介绍 这一部分我们主要看看oracle中如何管理权限和角色,权限和角色的区别在那里. 当刚刚建立用户时,用户没有任何权限,也不能执行任何操作,oracle数据库会自动创建一个方案, ...
- QuaZip实现多文件打包
项目需求: 在Goldenfarm客户端中当用户选择了本地场景文件,并进行本地场景文件分析后会产生分析结果,分析结果主要包括:贴图纹理.可渲染层等,其中贴图纹理指出了在场景文件中使用到的贴图或其它文件 ...
- Cocos2d-x中获取设备语言的方法
1.cocos2dx获取设备语言的方法:CCApplication::sharedApplication()->getCurrentLanguage() 2.cocos2dx 2.1.4支持识别 ...
- 用java读取properties文件--转
今天为了通过java读取properties文件,google了很长时间,终于找到了.现在特记录之和大家一起分享. 下面直接贴出代码:java类 public class Mytest pub ...
- android注解使用详解(图文)
在使用Java的SSH框架的时候,一直在感叹注解真是方便啊,关于注解的原理,大家可以参考我的另一片文章Java注解详解.最近有时间研究了android注解的使用,今天与大家分享一下. android中 ...
- Java基础知识强化之集合框架笔记53:Map集合之Map集合的遍历 键值对对象找键和值
1. Map集合的遍历(键值对对象找键和值) Map -- 夫妻对 思路: A: 获取所有结婚证的集合 B: 遍历结婚证的集合,得到每一个结婚证 C: 根据结婚证获取丈夫和妻子 转换: A: ...
- Android(java)学习笔记191:Android数据存储5种方式总结
1.使用文件(File)存储 存储一般的数据 2.使用sharedperference(xml) 存储设置信息.配置信息.密码 3.数据库Sqlite 开源的,嵌入式的数据库,轻量级 4.使用Cont ...