Swift语法基础入门二(数组, 字典, 字符串)

数组(有序数据的集) *格式 : [] / Int / Array()

  • let 不可变数组
  • var 可变数组 注意:
  • 不需要改变集合的时候创建不可变集合是很好的实践。如此 Swift 编译器可以优化我们创建的集合。
// 声明数组
let arr1: Array<Int>
// 推荐
let arr2: [Int]
arr2 = [10, 20] // 先定义再初始化
//arr2 = [30, 40] var arr3: [Double]
arr3 = [10.1, 10.2]
arr3 = [8.1, 9.0] // 定时的同时初始化
let arr4 = [10, 20, 30]
var arr5 = [10.1, 10.2, 10.3] // 取值
arr5[0] // 遍历
for item in arr5 {
print(item)
} for (xxx, ooo) in arr5.enumerate() {
print(xxx)
print(ooo)
} // 添加
arr5.append(9.1) // 删除
arr5.removeAtIndex(1)
arr5 arr5.removeAll() // 合并
var arr6 = [1, 3, 5]
var arr7 = [2, 4, 6]
//arr6 += arr7
arr6 += arr7[0..<2] // 初始化一个带默认值的数组
var arr8 = Array(count: 5, repeatedValue: 0) //数组如何分配存储空间, 按照2的倍数来分配
var arr9 = [Int]()
arr9.capacity
arr9.append(10)
arr9.capacity
arr9.append(11)
arr9.capacity
arr9.append(12)
arr9.capacity
arr9.append(13)
arr9.capacity
arr9.append(15)
arr9.capacity

字典(无序数据集)

  • Swift 的Dictionary类型被桥接到Foundation的NSDictionary类。
  • 格式 [:] / Dictionary()
  • let 不可变字典
  • var 可变字典

注意:

  • 一个字典的Key类型必须遵循Hashable协议
// 声明字典
let dict: [String: Double] // 初始化字典
dict = ["score": 99.9]
//dict = ["age": 30] // 定义空字典
let dict1 = [String: Int]() // 定义有值的字典
// [String : NSObject] 类型是做iOS开发中最最常见的类型
var dict2 = ["name": "lnj", "age": 31, "score": 59.5] // 获取
dict2["name"] // 增加
// 只要字典中没有对应的key就会新增
dict2["rank"] = 1
dict2 // 删除
dict2.removeValueForKey("rank")
dict2 // 遍历
for key in dict2.keys
{
print(key)
} for value in dict2.values
{
print(value)
} for (key, value) in dict2
{
print(key)
print(value)
} // 合并
var dict3 = ["name": "lnj", "age": 31]
var dict4 = ["rank": 1, "score": 99.9]
for (key, value) in dict4 {
dict3[key] = value
}
dict3

字符串

  • Swift 的String类型与 Foundation NSString类进行了无缝桥接
  • OC语言中的字符串也是以\0结尾, Swift不是
  • OC中字符串是一个对象, Swift中使用String是一个结构体,效率更高, 支持遍历 注意
  • Swift 的String类型是值类型。 如果您创建了一个新的字符串,那么当其进行常量、变量赋值操作,或在函数/方法中传递时,会进行值拷贝。 任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值操作
let str = "xmg\0lnj"
for ch in str.characters {
print(ch)
} // 拼接
var str1 = "xmg"
var str2 = "nx"
str1 += str2
str1 // 插值
let name = "lnj"
let age = 31
let result = "name = \(name), age = \(age)" // 格式化
//01.png
//02.png
//...
//10.png
for i in 0...5
{
let name = String(format: "%02d.png", arguments: [i])
print(name)
} // 截取
let str3 = "com.520it.xmg"
// 截取xmg
// 注意: Swift中截取字符串的方法, 接收的参数和OC中不一样
// 前期, 为了大家开发方便, 建议转换为NSString之后再截取
// 转换
let str4 = str3 as NSString
let result2 = str4.substringFromIndex(10) //Swift字符串中的 .startIndex ,用于获取字符串中第一个字符的位置
//Swift字符串中的 .endIndex, 用于获取字符串中最后一个字符串`下一位`的位置
let result3 = str3.substringFromIndex(str3.endIndex.advancedBy(-3))
let result4 = str3.substringFromIndex(str3.startIndex.advancedBy(10))

end

Swift语法基础入门二(数组, 字典, 字符串)的更多相关文章

  1. Swift语法基础入门三(函数, 闭包)

    Swift语法基础入门三(函数, 闭包) 函数: 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 格式: ...

  2. Swift语法基础入门四(构造函数, 懒加载)

    Swift语法基础入门四(构造函数, 懒加载) 存储属性 具备存储功能, 和OC中普通属性一样 // Swfit要求我们在创建对象时必须给所有的属性初始化 // 如果没办法保证在构造方法中初始化属性, ...

  3. Swift语法基础入门一(适合有C, OC开发人员)

    Swift开发体验 /*: 创建对象 * OC: alloc initWithXXX 方法 * Swift: (xxx:) */ /*: 调用方法 * OC: [UIColor redColor]; ...

  4. C#基础入门 二

    C#基础入门 二 循环语句 与C语言中用法相同. continue:结束本次循环(continue)后面的代码不再执行,进入下次循环(通常与if连用). 数组 一维数组定义:int[] intArra ...

  5. @proprety数组字典字符串用copy和strong区别(深浅拷贝)

    ////  @proprety数组字典字符串用copy和strong区别(深浅拷贝).h//  IOS笔记//// /* _proprety________copy_strong_________h ...

  6. Java03-Java语法基础(二)运算符

    Java语法基础(二)运算符 一.运算符 1.算数运算符:+.-.*./.% 1)双目运算符:二元运算符,参加运算的对象有两个(+.-.*./.%) 2)单目运算符:一元运算符,参加运算的对象只有一个 ...

  7. C++基础之字符数组和字符串

    无意中发现了一个非常有意思的技术类型小品文系列,通过大牛指导菜鸟的方式,解说讲C++知识,有的非常基础却是开发中easy忽略的地方. [Elminster的专栏] http://blog.csdn.n ...

  8. js语法基础入门(1)

    1.基础入门 1.1.hello world 1.1.1.JavaScript是什么? JavaScript是一门跨平台.面向对象的轻量级脚本语言,在web开发中被广泛应用 1.1.2.JavaScr ...

  9. js语法基础入门(7)

    7.数组 7.1.什么是数组以及相关概念? 什么是数组?是一组数据有序排列的集合.将一组数据按一定顺序组织为一个组合,并对这个组合命名,这样便构成了数组. 什么是数组元素?组成数组的每一个数据称为数组 ...

随机推荐

  1. Oracle SQL函数之聚组函数

    AVG([distinct|all]x) [功能]统计数据表选中行x列的平均值. [参数]all表示对所有的值求平均值,distinct只对不同的值求平均值,默认为all 如果有参数distinct或 ...

  2. 关于JavaScript 原型的理解

    原型的含义是指:如果构造器有个原型对象A,则由该构造器创建的实例(Object Instance)都必然复制于A.““在JavaScript中,对象实例(Object Instance)并没有原型,而 ...

  3. PHP常用内置函数

    $_SERVER['SCRIPT_NAME'] 返回/mantis/test.php 相对路径 __FILE__返回文件的绝对路径 $_SERVER['HTTP_X_FORWARDED_PROTO'] ...

  4. UIView和其子类的几个初始化函数执行的时机

    -(id)initWithFrame:(CGRect)frame - UIView的指定初始化方法; 总是发送给UIView去初始化, 除非是从一个nib文件中加载的; -(id)initWithCo ...

  5. C语言中宏定义(#define)时do{}while(0)的价值(转)

    C语言中宏定义(#define)时do{}while(0)的价值 最近在新公司的代码中发现到处用到do{...}while(0),google了一下,发现Stack Overflow上早有很多讨论,总 ...

  6. thinkphp+redis实现秒杀功能

    好久没来整理文章了,闲了没事写篇文章记录下php+redis实现商城秒杀功能. 1,安装redis,根据自己的php版本安装对应的redis扩展(此步骤简单的描述一下) 1.1,安装 php_igbi ...

  7. weblogic配置domain和删除domain

    weblogic创建域的过程比较简单,但是在创建域之前一定要注意不能存在重名的domain. Domain简单定义为:是一个逻辑管理单元,Domain下面包含着weblogic应用服务器中的所有东西, ...

  8. python运维开发(八)----面向对象(下)

    内容目录: 面向对象三大特性之多态性 面向对象中的成员:字段.方法.属性 类的成员修饰符 类的特殊成员 特殊成员方法 面向对象其他 异常处理 设计模式之单例模式 面向对象的多态性 多态性:即指多种形态 ...

  9. 现代OpenGL教程 01 - 入门指南

    原文链接传送门 译序 早前学OpenGL的时候还是1.x版本,用的都是glVertex,glNormal等固定管线API.后来工作需要接触DirectX9,shader也只是可选项而已,跟固定管线一起 ...

  10. quoit design(hdoj p1007)

    Problem Description Have you ever played quoit in a playground? Quoit is a game in which flat rings ...