Swift 基本语法 : 一


  • let 定义常量,一经赋值不允许再修改
  • var 定义变量,赋值之后仍然可以修改

  1.  BUTTON  的监听方法  
         //  button   监听方法
        btn.addTarget(self, action: "clickButton:", forControlEvents: .TouchUpInside)
       
    }
    //在   action: "clickButton:” 先写下面的方法
 
    func clickButton(btn: UIButton) {
        print(__FUNCTION__)
        print(btn)
    }


  2. 没有隐式转换!!!
// 如果要对不同类型的数据进行计算,必须要显式的转换
// 注意:Int & Double 都是结构体,而不是基本数据类型
// 整数默认的类型是 Int
let x: Int = 200
// 小数的默认类型是 Double
let y: Double = 10.5

// Binary operator '+' cannot be applied to operands of type 'Int' and 'Double'
// 不同数据类型之间不能直接计算
// print(x + y)
// 如果要对不同类型的数据进行计算,必须要显式的转换
print(x + Int(y))
print(Double(x) + y)


  // 2. 方法2Swift的语法
        // startIndex 是字符串的起始索引位置 -> 0
        // endIndex 是字符串的结束的索引位置 -> count
        // advancedBy 是将索引递进的函数
        //  n > 0 向右递进 n 个字符
        //  n < 0 向左递进 n 个字符
        let subStr2 = str.substringFromIndex(str.startIndex.advancedBy(2))
       
print(subStr2)
       
       
// can not increment endIndex,不允许递增 endIndex,会出现越界
        let subStr3 = str.substringToIndex(str.endIndex.advancedBy(-2))
       
print(subStr3)
       
       
// Xcode 7 beta 5 开始就固定了格式了
        let startIndex = str.startIndex //.advancedBy(2)
        let endIndex = str.endIndex //.advancedBy(-2)
       
       
print(startIndex)
       
print(endIndex)
       
       
// 提示如果 范围越界,会崩溃
        let subStr4 = str.substringWithRange(startIndex..<endIndex)
       
print(subStr4)
 // MARK: - 字典
    /// 拼接
    func demo9() {
       
var dict1 = ["name": "zhang", "age": 18]
       
let dict2 = ["title": "boss", "name": "老王", "height": 1.3]
       
       
// 目标,将 dict2 的内容合并到 dict1
        // dict1 += dict2
        // 遍历字典2,依次设置数值
        // 遵守 key 唯一的原则,如果有,覆盖 / 如果没有 新建
        for (k, v) in dict2 {
            dict1[k] = v
        }
       
       
print(dict1)
    }
   
   
/// 增删改
    /// 可变 var
    /// 不可变 let
    func demo8() {
       
// 字典中的 key 是通过 hash 哈希值来取值的 在字典中 key 是唯一的
        var dict = ["name": "zhang", "age": 18]
       
       
// 添加值 - 如果 key 不存在,新建值对
        dict["title"] = "boss"
       
       
print(dict)
       
       
// 修改值 - 如果 key 存在,覆盖原有值对
        dict["name"] = "老王"
       
print(dict)
       
       
// 删除
        dict.removeValueForKey("age")
       
print(dict)
       
       
// 还有一种删除方法
        dict["name"] = nil
       
print(dict)
    }
   
   
/// 字典的遍历
    func demo7() {
       
let dict = ["name": "zhang", "age": 18]
       
       
// 0 key
        // 1 value
        // 语义不直观
        for e in dict {
           
print("\(e.0), \(e.1)")
        }
       
       
/**
           
前面的参数 key KEY
           
后面的参数 value
        */

       
for (key, value) in dict {
           
print("\(key) \(value)")
        }
    }
   
   
/// 字典的定义
    /// OC 中使用 {}
    /// Swift 中还是 []
    func demo6() {
       
       
// [String : NSObject] / [String : AnyObject] Swift 开发中,非常普遍
        /**
        An object that may be converted to JSON must have the following properties:
       
        - Top level object is an NSArray or NSDictionary
           
顶级节点是 NSArray 或者 NSDictionary
        - All objects are NSString, NSNumber, NSArray, NSDictionary, or NSNull
           
所有对象必须是 NSString, NSNumber, NSNull
           
字典和数组中只能包含以上三种类型的值
        - All dictionary keys are NSStrings
           
所有字典的 key 都必须是 NSString
        - NSNumbers are not NaN or infinity
           
数值不能为空或者无穷大 (infinity)
        */

       
let dict = ["name": "zhang", "age": 18]
       
       
print(dict)
    }
   
   
// MARK: - 数组的演练
    /// 合并数组
    func demo5() {
       
var a1 = [1, 2, 3]
       
let a2 = [4, 5, 6]
       
       
// 目标,将 a2 合并到 a1
        a1 += a2
       
       
print(a1)
    }

   
/// 演示数组的容量
    func demo4() {
       
/// 定义类型,没有初始化,如果定义一个空的数组
//        var array: [String]
//        //
实例化一个空的字符串数组
//        array = [String]()
        // 以上两句代码也可以合并成一条语句
        var array = [Int]()
       
print(array.capacity)
       
       
// 关于容量:数组的初始容量默认是0
        // 在添加元素的时候,如果超出当前容量范围,在当前容量范围基础上 * 2
        for i in 0..<9 {
            array.
append(i)
           
print("\(array) -- 容量 : \(array.capacity)")
        }
    }
   
   
/// 增删改 -> 可变 NSMutableArray -- var / 不可变 NSArray -- let
    func demo3() {
       
var array = ["zhang", "wang", "li"]
       
       
// 添加内容 addObject
        array.append("小花")
       
       
print(array)
       
       
// 以下代码有问题吗?
        // Cannot convert value of type 'Int' to expected argument type 'String'
        // 不能向数组中追加不允许的类型
        // array.append(180)
       
       
// 修改
        array[0] = "老王"
       
print(array)
       
       
// 删除全部
        // 其他的语法 remove 开头,大家可以课后练习!
        array.removeAll()
       
print(array)
    }
   
   
/// 遍历数组
    func demo2() {
       
// [String]
        let array = ["zhang", "wang", "li"]
       
       
// 1. 直接按照下标遍历
        for i in 0..<array.count {
           
print(array[i])
        }
       
       
// 2. for in
        // s 的类型取决于 数组的类型
        for s in array {
           
print(s)
        }
       
       
// 3. 遍历内容和下标
        for e in array.enumerate() {
           
print("\(e.index) \(e.element)")
        }
       
       
print("----")
       
       
// 4. 示例代码
        // n 就是索引,s 就是字符串
        // n s 的名字可以随便写
        for (n, s) in array.enumerate() {
           
print("\(n) \(s)")
        }
       
       
print("----")
       
// 5. 倒序遍历数组
        for s in array.reverse() {
           
print(s)
        }
       
       
// 6. 倒序下标遍历
        for e in array.reverse().enumerate() {
           
print(e)
           
print("\(e.index) \(e.element)")
        }
     }
   
   
/// 数组的定义 []
    func demo1() {
       
// [String] -> 表示存放字符串的数组
        // 根据右侧的内容自动推导数组中的元素类型
        let array = ["zhang", "wang", "li"]
       
       
// [Int]Swift中基本数据类型不需要包装,Int 是一个结构体
        let array1 = [1, 2, 3, 4, 5]
       
       
// [NSObject](继承自 NSObject 的子类) ->
        // [AnyObject],在 Swift 中使用的更多,任意对象
        // Swift 中允许对象没有任何父类
        // 如果数组中的元素类型不一致,会推导出 [NSObject] 类型
        let array2 = [1, "zhang"]
       
       
print(array)
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值