在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
swift还在不断的更新做细微的调整,都说早起的鸟儿有虫吃,那么我们早点出发吧,趁着国内绝大多数的coder们还没有开始大范围普遍应用。 网上有些大神说:swift很简单!我不同意这个观点,假如你用helloword来说它语法精简没错,但是这个简单的例子不能证明它功能简单! 我相信swift语言非常强大,拥有很多OC以前没有的超强大面向对象特性!想用好并不容易! 下面是:比较系统的整理了自己学习swift 的笔记,一方面用作记录,便于以后查阅,也分享给需要的朋友! 我是任海瑞,共勉!我与你还有很多有梦想的盟友们一起向着swift挑战! 一、简介 objective-c 30多年的语言,方括号语法,吓退不少人员。 swift是一门语法简洁,功能强大的语言,借鉴JaveScript、Go 语言,强大语言,既支持函数式编程,也支持面向对象编程,支持函数和闭包,值传递,引用传递。 支持面向对象的封装、继承、多态基本功能,也支持枚举,结构体,类三种面向对象类型,创建实例,调用方法,允许定义属性,方法,构造器,下标,嵌套类型。 想真正全面掌握swift的所有功能,并不简单。 参考:The Swift Programming Language 编程指南 四部分: 1、开发环境,Playground功能和用法,终端编译,运行程序; 2、基础语法+函数式编程+String\Array/Dictionary等内置类型 3、面向对象编程+Foundation框架 4、MVC设计+UI控件 Just Do It swift语言是强类型语言,有非常严格的类型检查,是编译型语言,编译后会得到可执行的目标文件。 不允许将可执行代码放在类定义中 例如: class Test{ println("hello") } 框架:一系列函数、类等程序单元的集合,系统地提供某一方面的功能。 Terminal :swiftc命令编译程序 swiftc -o hello.out HelloWorld.swift 生成hello.out文件 ./hello.out 执行 func test(){ println("test function") } swiftc -o test.out Test.swift main.swift 为了能让系统找到swift编译命令,需要配置路径添加到系统的PATH 修改Home 目录下的.bash_profile文件实现(隐藏文件,进入Home,然后ls -a即可) PATH = /Applications/Xcode-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:$PATH :是两个路径之间的分隔符 重启系统即可 use core date复选框 是表示项目打算使用core Date 来访问SQLite数据库 测试用例: setUp() 初始化基础的测试资源 tearDown() 销毁setUp()初始化的测试资源 wrap lines 自动换行 帮助文档中:C是类,M是方法,Pr是协议,f是函数 二、基本数据类型 注释:代码即是文档。 var 变量:装数据的小容器, var name = "任海瑞" printlin(name) let 常量:一旦创建不能更改 var lastName= "ren" allName = lastName + "hairui" var str = "heri" 判断Sting是否为空 str.isEmpty 花括号:{代码块} 包括:类,结构体,枚举,函数体,方法体 方括号:[数组元素或字典元素] a[] = 3 ; cross["swift"] = 80 //对cross字典中key为swift的元素赋值 圆括号(定义元组或定义函数) 圆点. 类,结构体,枚举,实例和它的成员(属性和方法)调用 关键字:keyword 具有特殊用途的单词 声明:class,deinit,enum,extension,func,import,init,internal,let,operator,private,protocol,public,static,struct,subscript,typealias,var 语句:break,case,continue,default,do,else,fallthrough,for,if,in,return,switch,where,while 类型,表达式:as,dynamicType,false,is,nil,self,Self,super,true,_COLUMN_,_FILE_,_FUNCTION_,_LINE_ 可同时声明多个变量,不同类型 var a = 10,b:String,c = "renhairui" let myName = "renhairui",myAge = "26" println() 比print()输出内容后会换行 字符串插值string interpolation : 变量名/常量名 放在圆括号内,前面使用反斜杠进行转义。例如:println("我的名字是:\(myName),我的年龄是:\(myAge)") 一般尽量使用Int型,会提高通用性,可以访问不同整型的min, max属性来获取最小最大值,例如:println(Int32.min) 避免使用无符号整数,提高代码复用性,避免不同数值类型之间转换改变值。 并且建议从小向大变 Int8->Int16->Int32->Int64->Float->Double Bool 只能是true,false 和oc中完全不同 元组 tuple :用圆括号把多个值组合成一个复合值,可以是任意类型。 var health = (180,70,"良好") //自动推断类型 (Int,Int,String) 可以嵌套 var test (20,(15,"swift")) 通过下标访问,\(health.0) \(test.1.0) 也可以拆分成单个的 var (height,weight,status) = health; println("身高是:\(height) ,体重:\(weight),状态:\(status)") 不需要某个的时候,可以用_下划线 ,忽略 let(a,b,_) = health 可以使用key value 命名, var health = (height:180,体重:70,status'良好") key 赋值时,顺序可以调换。 通过名字访问: \(health.height) 可选类型 处理值缺失的情况 类型? Sting? var str = "renhairui" var num :Int? = str.toInt() //转换失败,是nil,值缺失 区别:OC中nil代表 不存在的对象指针 ,swift中完全不同! 只有可选类型的变量常量才能接受nil var age:Int = nil //错误的! 强制解析 forced unwrapping 为了获取可选类型的值,名后加!,进行解析,表示:已知已有值,提取值 var str:String? = "renhairui" var s:String = st! var n1:Int? = 10 var n2:Int? = 5 let sum = n1!+n2! // 必须使用强制解析,否则编译无法通过 为了确保强制解析不会导致运行崩溃,提供if判断 if str != nil { var s = str! }else{ println("不能强制解析") } if n1 !=nil && n2 !=nil{ let sum = n1! +n2! } 可选绑定 optional binding 用于判断可选类型是否有值,用在If while中判断 var str : String? = "renhairui" if var tmp = str{ } 隐式可选类型 任意已有类型后边加!表示可选类型 Int! 接受 Int值和nil Int 只能接受Int值 Int?接受Int和nil 但是要强制解析 作用:用于定义那些被赋值之后 不会重新变为nil的变量 用的时候也需要判断 if let temp = name {} 类型别名 typealias typealias Counter = Int //以后使用Counter完全代表Int \(Counter.max) Unicode形式 \u{2666} 表示 ♦️ var str = String() //创建空字符串 var strCopy = String(count:5,repeatedValue:Character("f")) //创建5个重复f let name = "renhairui" var info = name + "is a good man!" println(info) var subStr = name.substringWithRange(NsMakeRange(3,6)) // 从3开始,连续6个,输出hairui swift的Sting 是值类型,复制实例的副本传递,不是OC的 * info.removeAll //清空 countElements(info) //计算字符数量,unicode也可以 遍历 for a in info { } 比较字符串: 相等: ==,前缀相等:hasPrefix(),后缀相等:hasSuffix() var hasOrNo:Bool = name.hasPrefix("ren") //name = "renhairui"
|
请发表评论