美文网首页
Swift语法记录

Swift语法记录

作者: figure_ai | 来源:发表于2016-12-27 22:15 被阅读0次

1.常量和变量

let:修饰常量;
var:修饰变量;

  • 注:
    在开发中一般优先使用常量let修饰,只有在需要修改时,再把let改为var(这样做可以使得数据更加安全)
let pi : Double = 3.14
var age : Int = 20
  • 附:
    常量的意思是:指向的对象指针不可修改,但是可以通过指针拿到对象,然后修改内部属性。

2.类型推导和基本运算

2.1类型推导

释义:如果一个标识符在定义时有直接复制,那么可以根据后面赋值的类型,来推导前面标识符的类型,这样可以不用声明数据类型。(注:可以通过option+鼠标左键,来查看标识符的类型)

var a = 20
var b = 3.14

2.2基本运算

注:在swift中进行运算,必须保证类型时一致的,因为Swift中没有隐式运算。

var a = 20
var b = 3.14
//将Double类型转化成Int类型
let c = Int(b) + a
//将Int类型转化成Double类型
var d = Double(a) + b

3.if、三目运算符、和guard的使用

3.1 if的使用

注:if 判断条件可以不用加();但判断句结果必须是一个真假值

let a = 20
//let flag = a < 10
//示例1
if a > 10{
    print("a大于10")
}else{
    print("a小于10")
}
//示例二
let score = 87
if score < 60{
    print("不及格")
}else if score < 70{
    print("及格")
}else if score < 90{
    print("良好")
}else if score <= 100{
    print("优秀")
}else{
    print("其他")
}

3.2 三目运算符

let age = 20
let result = age >= 18 ?"可以上网" : "不可以上网"
print(result)
//如果条件为真打印:可以上网;如果条件为假打印:不可以上网

3.3 guard的使用

guard age >= 18 else
{
  //如果判断句为假,会执行else里边的语句
print("不能上网")
return false
}
//如果为真,继续执行
print("可以上网")
return true

4.Switch的使用

总结:

  1. 有case穿透,可以在语句后加fallthrough
//示例1:简单使用
let sex = 0
switch sex{
case 0:
      print("男")
case 1:
      print("女")  
default:
      print("其他")
}
//示例2:有case穿透时,可以在语句后加**fallthrough**
switch sex{
case 0:
      print("boy")
      fallthrough
case 1:
      print("girl")
default:
      print("other")
}
//示例3:case中可以通过“,”分割来实现判断多个条件
switch sex{
case 0,1:
      print("human")
default:
      print("other")
}
//示例4:判断浮点型数据
let a = 3.14
switch a{
case 3.14:
      print("pi")
default:
      print("other")  
}
//示例5:判断字符串
let m = 20
let n = 2
let operation = ""
var result : Int
switch operation{
case "+"
      result = m + n 
case "-"
      result = m - n
case "*"
      result = m * n
case "/"
      result = m / n
default:
      print("非法输入")
}
//示例6:判断区间
let score = 80
switch score{
case 0..<60:
      print("不及格")
case 60..<70:
      print("及格")
case 70..<90
      print("良好")
case 90..<100:
      print("优秀")
default:
      print("不合理的分数")
}

5.for、while、doWhile的使用

5.1 for循环

//写法一:常规写法
for var i = 0; i < 10; i++
{
print(i)
}
//写法二:区间for循环
for i in 0...10
{
print(i)
}
//写法三:如果for循环中没有用到"i"可以用"_"代替
for _ in 0..<10
{
print("hello world")
}


5.2  **while循环**
>注:条件不需要写()
判断条件必须有真假值(Bool)

var a = 10
while a < 20
{
a++
print("111")
}


5.3 **doWhile 循环**
>注:doWhile循环在swift 中,do需要换成“repeat”代替

repeat
{
a++
print("222")
}while a < 30

####6. 字符串Stirng的相关操作

/************1. Stirng的遍历****************/
//关键属性:str.characters
let str = "Hello Swift"
for s in str.characters{
print(s)
}
/************2. String 的拼接****************/
//1.两个字符串之间的拼接
let str1 = "Hello "
var str2 = "Swift"
str2 = str1 + str2
//2. 字符串和其他类型的变量常量的拼接
//格式:(变量/常量名)
let age = 19
let height = 1.34
let str3 = "age is (age), height is (height)"
//3. 字符串的格式化
//关键方法:String(format: ,arguments:)
let min = 2
let second = 32
let time = String(format:"%02d:%02d",arguments:[min,second])
/***************3. String的截取***************/
//提示:不要使用string方法截取.index因为非常不好截取
let urlString = "www.520it.com"
//string 转成NSString,只需要在String后面跟上:as NSString
//从其实位置截取index个长度
let prefixString = (urlString as NSString).substringToIndex(3)
//从location位置开始截取length个字符
let middelString = (urlString as NSString).substringWithRange(NSRange(location: 4, length: 5))
//从某位置截取到结尾
let subfixString = (urlString as NSString).substringFromIndex(10)


####7.数组的初始化
>注:
- 可变数组:var修饰
- 不可变数组:let修饰

/***********不可变数组*************/
//定义写法一:
let names : Array<String> = ["why", "what", "when", "how"]
//取出数组中的元素
names[1]
//定义写法二:常用
let names : [String] = ["lch", "zjq", "fhq"]
//定义写法三:类型推导
let names2 = ["why", "hh", "asdf"]
//可变数组:
//定义写法一:
var names3:[String] = ["why", "yz"]
//添加元素
names3.append("lch")
//定义写法二:
var names4 : [String] = String
names4.append("whld")


####8. 数组的相关操作
```//定义可变数组
//Swift 开发中,可以使用AnyObject代替NSObject
var names : [AnyObject] = [AnyObject]()
/********************1. 对数组的基本操作**********************/
//1. 添加元素
names.append("why")
names.append("Imsa")
names.append(14)
names.append(3.283)
names.append("why")
names.append(14)
names.append(3.214)
//2. 删除元素
names.removeLast()
names.removeFirst()
names.removeAtIndex(0)
names
//3. 修改元素
names[0] = "sd"
names
//4. 取出数组中的值
names[0]
//2. 数组的遍历
//1. 通过下标值遍历
for i in 0..<names.count{
    print(names[i])
}
//2.forIn方式
for item in names{
    print(item)
}
//3. 区间遍历
for i in 0..<2{
    print(names[i])
}
for item in names[1..<3]{
    print(item)
}
//数组的合并
//1. 类型相同数组的合并
let array1 = ["why", "sdfaew", 20]
let array2 = ["sdf", "dds", 8]
let array3 = array1 + array2
//2. 类型不同的数组的合并
let age1 = [18, 10, 35]
let names2 = ["sde", "ed", "aed"]
var array4 : [AnyObject] = [AnyObject]()

9. 字典的初始化

/*************1. 不可变字典****************/
//1. 方式一:
let dict1 : Dictionary<String, AnyObject> = ["name" : "hh", "age" : 123]
//2. 方式二:常用
let dict2 : [String : AnyObject] = ["name" : "wef", "age" : 21]
//3.方式三
let dict3 : ["name" : "sad", "age" : 23]
/**************2.可变字典******************/
//方式一: 
var dict4 = Dictionary<String, AnyObject>()
//方式二:
var dict5 = [String : AnyObject]()
//方式三:
var dict6 = ["name" : "fdgc", "age" : 09]

10. 字典的操作

10.1 字典基本操作

//1. 添加元素
dict["name"] = "sld"
dict["age"] = 32
dict["height"] = 1.32
dict["weight"] = 76
//2. 删除元素
dict.removeValueForKey("age")
dict.removeAll()
//3. 修改元素
dict["name"] = "lch"
dict
//4. 取出元素
dict["name"]
//1. 遍历字典的键
for key in dict.keys {
    print(key)
}
//2. 遍历字典的值
for value in dict.values {
    print(value)
}
//3. 遍历字典的键值对
for (key, value) in dict {
    print(key)
    print(value)
}
//字典的合并
//注意:字典无论类型是否一致,都不能通过直接直接相加来合并
let dict1 = ["name" : "sdl"]
var dict2 : [String : AnyObject] = ["age" : 23]
for (key, value) in dict {
    dict2[key] = value
}

11. 元组的使用

/**************定义元组****************/
//方式一:
let a = ("why", 24, 1.35)
//方式二:
let b = (name : "sldh", age : 34)
//方式三:
let(name, age) = ("sd", 98)
/************元组的使用************/
let error = (404, "Not Found")
error.0
error.1
let error1 = (errorCode : 404, errorInfo : "Not Found")
error1.errorCode
error1.errorInfo
let (errorCode1, errorInfo1) = (404, "Not Found")
errorCode1
errorInfo1

12. 可选类型

注:如果一个可选类型中没有值,强制解包会报错,所以在强制解包前最好先进行判断是否有值,如果有值再进行解包

//定义方式一:
var name : Optional<String>
//给可选类型赋值
name = "wld"
//取值: 可选类型名+!;表示强制解包
print(name!)
//拼接
let info = "my name is" + name!
//定义方式二:String?
//let phoneNum : Optional<String>
var phoneNum : String? = nil
phoneNum = "+86110"
gurard phoneNum else {
    print("该值为空")
    return false
}
let phoneInfo = "my phoneNum is " + phoneNum!

13.throw的三种方式

  • try?

如果解析成功有值,否则返回nil

            guard let result: [String: Any] = try? JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments) as! [String: Any]
                else {
                return
            }
  • try!

如果解析成功有值,否则崩溃

            let result: [String: Any] = try! JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments) as! [String: Any]
  • do{}catch{}

处理异常,能够接受到错误,并且输出错误,语法结构较复杂

do {
                let result: [String: Any] = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments) as! [String: Any]
                print(result)
            } catch {
                print(error)
            }

14闭包

//声明格式
var name: ((参数) -> (返回值))= {代码}
//实现格式

      代码
}  ```
**示例**

//声明一个闭包
var callBack: (() -> ())? = nil
//闭包作为函数参数
class func requestData(urlString:String, successBack: (Any)->(), errorBack: @escaping(Any)->()) {
//代码
}
//实现闭包
_ = HttpTool.requestData(urlString: url, successBack: { (resultData) in
CHLog(message: resultData)
}, errorBack: { (error) in
CHLog(message: error)
})

相关文章

  • Swift语法记录

    1.常量和变量 let:修饰常量;var:修饰变量; 注:在开发中一般优先使用常量let修饰,只有在需要修改时,再...

  • switf小笔记

    不怎么写swift记录一下先 Swift:Selector 语法糖 引用自 https://developer.5...

  • swift学习笔记(二)

    继续记录swift知识点: 1)枚举 枚举语法: ** 和 C 和 Objective-C 不同,Swift 的枚...

  • 学习Swift

    LearnSwiftEasily 用心记录自己学习Swift的心得体会,让学习变得简单与快乐! Swift基础语法...

  • Swift 基本语法04-"switch"和

    Swift 基本语法01-Swift简介Swift 基本语法02-"let"和"var"Swift 基本语法03-...

  • Swift 基本语法06-数组和字典

    Swift 基本语法01-Swift简介Swift 基本语法02-"let"和"var"Swift 基本语法03-...

  • Swift 基本语法03-"if let"和

    Swift 基本语法01-Swift简介Swift 基本语法02-"let"和"var"Swift 基本语法04-...

  • Swift 基本语法05-"String"

    Swift 基本语法01-Swift简介Swift 基本语法02-"let"和"var"Swift 基本语法03-...

  • 01 Swift最基本的语法变化

    本swift系列笔记更新记录 2017.6.20 -- 基于swift3.1的语法更新代码。 导入框架 定义标识符...

  • Swift基本语法之函数

    Swift基本语法之初体验-常量变量-数据类型 Swift基本语法之逻辑分支 Swift基本语法之循环 Swift...

网友评论

      本文标题:Swift语法记录

      本文链接:https://www.haomeiwen.com/subject/hfdevttx.html