countElements()计算字符串长度。
比较字符串相等, ==。
字符串判空。isEmpty
字符串转换成int。toInt()
int?
!
nil
shoppingList.insert("abc",atIndex:0)
shoppingList.append("abc","bac")
shoppingList.removeAtIndex(0) //返回删除值
shoppingList.count//数组长度
for item in shoppingList {
println(item)
}
for(index, value) in enumerate(shoppingList) {
....
}
airports["LHR"] = "London"
airports.removeValueForKey()
airports.count
for(airportCode, airportName) in airports{
}
for(airportCode in airports.keys {
}
for(airportName in airports.values {
}
let airportCodes = Array(airports.keys)
类与结构体有很多共性:
类比结构体多出的功能:
属性的主要作用是存储数据
延迟存储属性是初始化时候不分配值,直到第一次使用它。属性@lazy声明。
场景: 大属性创建、少用
为了监听属性的变化,swift通过了属性观察者。
willSet观察者是在存储之前调用。
didSet新值存储后调用。
静态属性在结构体中使用static定义,类中使用class定义。
struct SomeStructure {
static var storedTypeProperty = "Some values".
static var computedTypeProperty:Int{
}
}
class SomeClass{
class var computedTypeProperty:Int {
}
}
Swift中的方法是与特定类型(类和结构体)相关的函数。
隶属于某个特定类型(类或结构体)实例函数。
self代表当前对象。
下标可以在类和结构体中定义。
subscript(intdex: int) -> Int {
get {
}
set(new Value) {
}
}
只用get
swift中的类能够继承其他类的属性、方法等
方法重写:override
属性重写:
init
deinit
在现有类和结构体的基础上,扩展新的功能。
extension SomeType{
}
extension SomeType:SomeProtocol, AnotherProtocol {
}
extension Double {
var km: Double{return self*1_000.0}
var m: Double{return self}
var cm:Double {return self/100.0}
var mm:Double {return self/1_000.0}
var ft:Double{return self/3.20004}
}
let oneInch = 25.4mm
extension Int {
func message() -> String{
var message = "";
switch self {
case 0:
message ="成功";
case -1:
message ="用户登录失败";
default:
message ="未知错误";
}
return message;
}
}
3.message()
0.message()
(-1).message()
协议是为方法、属性等定义一套规范,没有具体的实现
协议能够被类、结构体等具体实现(或遵守)。
1.set和get访问器
protocol SomeProtocol{
var mustBeSettable: Int{get set}
var doesNotNeedToBeSettable:Int{get set}
}
2.jingtai静态属性
protocol AnotherProtocol {
class var someTypeProperty:Int{get set}
}
3只读
protocol FullyNamed {
var fullName:String{get}
}
1.定义方法
protocol RandomNumberGenerator {
func random() -> Double
}
2.定义静态方法
protocol RandomNumberGenerator {
class func random() -> Double