Swift 是 iOS 和 OS X 应用开发的一门新语言,是在 C 和 Objective-C 的基础上提出的。
学习Swift之前,它的一些必备学习资料还是有的
-
Awesome-Swift-Education
集合了大部分的swift的学习资料,非常齐全,就是没时间看,极力推荐。 -
Swift Guide
这份指南汇集了Swift语言主流学习资源,并以开发者的视角整理编排。
上面两份中有重复的,但是确实可以。
当然分细一点
- 苹果官方的开发者社区,这里有Swift的开发教程和指南,是个学习的地方。
- 苹果官方github地址,源码还是可以要看的。
- Swift Learn 实时更新,这是中文版Apple官方Swift教程《The Swift Programming Language》做到实时更新。
- Swift周报,还是可以持续关注的。
基础部分
变量和常量
//简单举例
var oneString = "oneTest" // 变量
let nowTimes = 0 // 常量
print(oneString,nowTimes)
但是像这样定义之后,一般会有警告 oneString 提示没有使用建议转换成 let 类型,说明var 是需要变化的。
类型标注
var oneString :String // 变量
// === NSString * oneString
oneString = "twoTest"
类型推断
Swift 是一个类型安全(type safe)的语言。类型安全的语言可以让你清楚地知道代码要处理的值的类型。如果你的代码需要一个String,你绝对不可能不小心传进去一个Int。
由于 Swift 是类型安全的,所以它会在编译你的代码时进行类型检查(type checks),并把不匹配的类型标记为错误。这可以让你在开发的时候尽早发现并修复错误.
let pi = 3.14159
// pi 会被推测为 Double 类型
let meaningOfBasketball = 23
// meaningOfLife 会被推测为 Int 类型
nil 和 可选
nil 可以给可选变量赋值为nil来表示它没有值:
var serverResponseCode: Int? = 404
// serverResponseCode 包含一个可选的 Int 值 404
serverResponseCode = nil
// serverResponseCode 现在不包含值
var surveyAnswer: String?
// surveyAnswer 被自动设置为 nil
注意
使用
!
来获取一个不存在的可选值会导致运行时错误。
使用!
来强制解析值之前,一定要确定可选包含一个非nil
的值。
可选类型暗示了常量或者变量可以“没有值”。可选可以通过if语句来判断是否有值,如果有值的话可以通过可选绑定来解析值。
有时候在程序架构中,第一次被赋值之后,可以确定一个可选类型总会有值。在这种情况下,每次都要判断和解析可选值是非常低效的,因为可以确定它总会有值。这种类型的可选状态被定义为隐式解析可选类型(implicitly unwrapped optionals)。把想要用作可选的类型的后面的问号(String?)改成感叹号(String!)来声明一个隐式解析可选类型。
总结
发现基础这块是最难总结和概括的,需要后续项目经验的加深才能有更系统的理解,暂时只能大致记录,后面陆续增加中~~~
问题一、打印,只用Print,如何区分不同类型的?
print(_:separator:terminator:)
NSLog(@""); println(),都不用了,只用print
print("one====\(oneString)")
//日志打印 one====twoTest
但是打印浮点数的时候,我们需要
let a = 0.12122
let format = String(format:"%.2f",a)
print("double==:\(format)" )
// double==:0.12
此时我们最好为Double 写一个扩展
extension Double {
func format(f: String) -> String {
return String(format: "%\(f)f", self)
}
}
let format0 = ".2"
print("double:\(a.format(format0))") // 这样就可以达到同样的效果啦 // double:0.12
备注:Double和Float的区别
- Double表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。
- Float表示32位浮点数。精度要求不高的话可以使用此类型。
Double精确度很高,至少有15位数字,而Float最少只有6位数字。选择哪个类型取决于你的代码需要处理的值的范围。