查看Swift版本
终端输入:xcrun swift -version
输出类似语句:
Apple Swift version 5.2 (swiftlang-1103.0.32.1 clang-1103.0.32.29)
Target: x86_64-apple-darwin19.0.0
1.使用** let 来声明常量,使用 var **来声明变量.
var a = "asdad"
let zl = 24
let zl: Double = 100
判断变量的数据类型:
print(type(of:a))
1.1类型别名:
typealias S = String
let c:S = "hello"
1.2类型转换
语法:类型()
let a = 10
print("值等于" + String(a))
1.3 ??运算符是三目运算符简写写法
var a:Int? = 100
var value = a ?? 0
print(value)
var value = a ?? 0 等同于
var value1 = (a != nil) ? a! : 0
print(value1)
1.4可选项绑定
使用if let
var a:Int? = 10
if let value = a {
print(value)
}
Int和Int!的区别:
var a:Int = 100
a = nil
var a1:Int! = 10
a1 = nil
这2种情况区别是a1可以赋值为nil,而a不能赋值为nil
2.要创建一个空数组或者字典,使用初始化语法。
let emptyArray = [String]()
let emptyDictionary = [String: Float]()
let listArray = [HomeModel]()
3.懒加载写法
class student: NSObject {
lazy var btn:UIButton = {
let btn = UIButton()
btn.backgroundColor=UIColor.red
btn.frame=CGRect(x: 100, y: 100, width: 100, height: 40)
return btn
}()
lazy var lineView:UIView = {
let view = UIView(frame: CGRect.zero)
view.backgroundColor = UIColor.lightGray
return view
}()
}
懒加载不需要像 ObjC 一样重写 getter 方法,并判空了,在属性前面加上 lazy 关键字就可以实现了。
lazy var view = UIView(frame:.zero)
如果还需要添加属性,那就用上面闭包写法方式
4.闭包写法
语法:() -> ()
(Int, Int) -> Int闭包类型起别名
typealias Tomato = (Int, Int) -> Int
5.函数定义
OC 类方法与实例方法例子
+ (UIColor*)blackColor
- (void)addSubview:(UIView *)view
Swift例子
class func blackColor() -> UIColor // 类方法, 通过 class func 关键词声明
func addSubview(view: UIView) // 实例方法
技巧:如何为您的扩展取个好听的名字
使用typealias
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
styleNavigationBar()
}
}
private typealias TableViewDataSource = ViewController
extension TableViewDataSource: UITableViewDataSource {
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("identifier", forIndexPath: indexPath)
return cell
}
}
private typealias TableViewDelegate = ViewController
extension TableViewDelegate: UITableViewDelegate {
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 64.0
}
}
private typealias ViewStylingHelpers = ViewController
private extension ViewStylingHelpers {
func styleNavigationBar() {
}
}
