//

 //  ViewController.swift

 //  Swift-Array

 //

 //  Created by luorende on 16/9/12.

 //  Copyright © 2016年 luorende. All rights reserved.

 //

 import UIKit

 class ViewController: UIViewController {

     override func viewDidLoad() {

         super.viewDidLoad()

         // Do any additional setup after loading the view, typically from a nib.

         /**

         数组

         数组的介绍

         数组(Array)是一串有序的由相同类型元素构成的集合

         数组中的集合元素是有序的,可以重复出现

         Swift中的数组

         swift数组类型是Array,是一个泛型集合

         数组的初始化

         数组分成:可变数组和不可变数组

         使用let修饰的数组是不可变数组

         使用var修饰的数组是可变数组

         */

         // 定义一个可变数组,必须初始化才能使用

         var array1 : [String] = [String]()

         print(array1)

         // 定义一个不可变数组

         let array2 : [NSObject] = ["age", ]

         print(array2)

 //        在声明一个Array类型的时候可以使用下列的语句之一

 //        可变数组类型,其数组中值必须为字符串

         var stuArray1:Array<String>

         var stuArray2: [String]

 //        声明的数组需要进行初始化才能使用,数组类型往往是在声明的同时进行初始化的

         // 定义时直接初始化 

         var array = ["why","only","you"]

         // 先定义,后初始化

         var array : Array<String>

         array = ["why", "only", "you"]

 //        数组的长度

         let  Arr = ["hell0","swift"]

         let count  = Arr.count //count 属性 返回 数组的长度

         print( "count=\(count)")

         /**

          运行结果:count=2

          */

         //数组中变量值的修改

         var  str = [,,]

         str[] =  //str[2] 指的是数组中索引为2的变量值即85  重新赋值为83

         print("str=\(str)")

         //数组的追加---appped()函数

         var  arr = [,] //定义整形数组变量arr

         arr.append()//append(3) 是在arr数组的尾端追加变量值3到数组中  即数组长度增加1

         print(" arr = \(arr)  长度=\(arr.count)")

         /**

          运行结果: arr = [1, 2, 3]  长度=3

          */

         //1 访问元素

         var test1Array=["你好","Swift","我在学习Swift"]

         print("第一个元素:\(test1Array.first)")

         print("最后一个元素:\(test1Array.last)")

         //2 获取数组元素的个数

         print("数组个数为:\(test1Array.count)")

 //        另外一种方式访问素组就是通过循环方式,可以采用loop方式或者for-in循环。

         var sum = 

         for number in literalArray

         {

             sum += number

         }

 //        这段代码实现的是遍历数组,并将素组的每个元素相加统计他们的和。

 //        3 可变数组的插入 Insert(变量值 , atIndex: 索引)

         //数组的追加  Insert(变量值 ,atIndex:索引)

         var  arr2 = [,] 

         arr2.insert(,atIndex:) // 在数组arr中0的位置插入变量值9 数组长度加1

         print("arr2=\(arr2) 长度=\(arr2.count)")

         /**

         运行结果:arr2=[9, 10, 11] 长度=3

         */

 //        可变数组的移除  removeAtIndex(索引),removeLast()

 //        数组的移除  removeAtIndex(索引)数组指定位置移除变量值

         var arr3 = [,,]

         arr3.removeAtIndex()//移除数组arr3中索引为0 的变量值,数组长度减1

         print("arr3 =\(arr3)  长度=\(arr3.count)")

         /**

         运行结果:arr3 =[101, 102]  长度=2

         */

 //        数组的移除  removeLast() 数组尾端移除变量值

         var arr4 = [,,]

         arr4.removeLast() //移除数组arr3中尾端的变量值,数组长度减1

         print(" arr4 =\(arr4)  长度=\(arr4.count)")

         /**

          运行结果:arr4 =[200, 201]  长度=2

          */

         //创建空数组

         /** 

          1: [Int] () 是整形空数组

          2: array 数组变量 被let 修辞 ,array数组只能访问

         */

 //        let  array = [Int] ()

         /**

          1: [Int] () 是整形空数组

          2: arr1 数组变量 被var  修辞 ,array数组是可变数组,可以动态修改

          */

         //判断数组是否为空

         let arr5 = [Int] ()

         if arr5.isEmpty { //isEmpth 是判断数组是否是空数组

             print("arr5 数组为空")

         }

         else{        

             print("arr5 数组不为空")

         }

         /**

         运行结果

         arr5 数组为空

          */

         //3 判断数组是否为空

         let test3Array:[String]=[]

         //方法1,根据数组元素的个数判断

         if test3Array.count=={

              print("此数组为空")

         }

         //方法2,i

 //        sEmpty

         if test3Array.isEmpty {

                 print("此数组为空")  

         }  

 //        数组的遍历

         var array5 = ["why","only","you"]

         // 遍历数组

         for i in ..<array5.count {

             print(array5[i])

         }

         // for in方式

         for item in array5 {

             print(item)

         }

         // 设置遍历的区间

         for item in array5[..<] {

             print(item)

         }

 //        修改数组

 //        var定义的数组才能修改,有几种方式可以修改数组。

 //        增加数组元素

 //        在数组末尾增加元素或者插入元素到指定的index,下面介绍通过append和+=方法增加元素

         var emptyArray = [Int]()

         emptyArray.append()

         emptyArray += []

 //        上面2个表达式效果是相同的。值得注意的一点是,使用+=操作符时,右边的必须为数组,即使只有一个元素时也要为数组,还有就是通过这种方式你可以一次性给数组增加多个值,如:

         emptyArray += [, , , ]

 //        现在,emptyArray含有了[5,5,9,8,7,6]这些元素值。

 //        可以通过insert方法插入元素到数组的任意位置。

         emptyArray.insert(, atIndex: )

         //emptyArray now is [5, 5, 12, 9, 8, 7, 6]

 //        我们在第三个位置插入12。

 //        清空数组方法:

         emptyArray.removeAll()

         //emptyArray now is empty once more

 //        removeAll方法接受一个参数,允许清空数组时是否保持数组的容量,该参数默认值为false,即将数组的capacity容量设置为0。如果你想保持容量,可以参考下代码:

         var originalCapacity = emptyArray.capacity   //

         originalCapacity = 

         emptyArray.removeAll(keepCapacity: true)

         var newCapacity = emptyArray.capacity        //

         newCapacity = 

 //        由上代码可以看出emptyArray在需要重新分配内存之前可以存储12个值,然而使用removeAll(),newCapcity则等于0。

 //        基于数组创建新数组

 //        可以采用+合并2个数组为一个数组,它返回的新数组顺序按照操作符左边的数组到右边数组的元素一次排列。

         let arrayOne = [,,,,]

         let arrayTwo = [, , ]

         let bothArrays = arrayOne + arrayTwo

         print(bothArrays)// 正常情况下是从小到大的顺序依次排列

         //bothArrays now is 1, 2, 3, 4, 5, 30, 40, 50]

 //        调用reserse方法反转数组元素也会返回一个新的数组。

         let normalArray = [, , , , , ]

         let reversedArray = normalArray.reverse() //从大到小的顺序

         print(reversedArray)

         //reversedArray now is [25, 24, 23, 22, 21, 20]

         // 数组合并 

         // 注意:只有相同类型的数组才能合并 

         let array00 = ["why", "lmj","lnj"]

         let array10 = ["yz", "wsz"]

         let array20 = array00 + array10;

         print(array20)

         // 不建议一个数组中存放多种类型的数据

         let array30 = [, , "why"]

         let array40 = ["yz", ]

         let array50 = array30 + array40

         print(array50)

     }

     override func didReceiveMemoryWarning() {

         super.didReceiveMemoryWarning()

         // Dispose of any resources that can be recreated.

     }

 }

iOS -Swift 3.0 -Array(数组与可变数组相关属性及用法)的更多相关文章

  1. iOS -Swift 3.0 -String(字符串常规用法)

    // // ViewController.swift // Swift-String // // Created by luorende on 16/9/10. // Copyright © 2016 ...

  2. iOS -Swift 3.0 -UILabel属性大全

    昨天研究了一下苹果近两年新出的Swift语言,感觉学起来并不是很吃力,毕竟自己有过Objective-C的语言功底,所以各方面的属性控件还是一眼就可以认出的,只是Swift的写法与Objective- ...

  3. NSArray与NSMutableArray 数组与可变数组

    1.NSArray 是一个父类,NSMUtableArray是其子类,他们构成了OC的数组.2.NSArray的创建NSArray * array = [[NSArray alloc]initWith ...

  4. NSArray与NSMutableArray 数组与可变数组的创建和遍历 复习

    1.NSArray 是一个父类,NSMUtableArray是其子类,他们构成了OC的数组. 2.NSArray的创建 NSArray * array = [[NSArray alloc]initWi ...

  5. Objective-C 数组、可变数组

    数组的使用方式 下面是数组:类型NSArray #import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int ...

  6. iOS -Swift 3.0 -for(循环语句用法)

    // // ViewController.swift // Swift-循环语句 // // Created by luorende on 16/12/08. // Copyright © 2016年 ...

  7. iOS -Swift 3.0 -UIButton属性大全

    // //  ViewController.swift //  Swift-UIButton // //  Created by luorende on 16/9/9. //  Copyright © ...

  8. 转载-NX11.0二次开发新增Spreadsheet相关类的用法!

    这几天搜NX对EXCAL读取写入相关的开发内容,发现唐工写了一篇关于NX11对EXCAL操作的文章.让我知道NX11新增了对EXCAL操作相关的类,以前NX里是没有的.我以前都是用OLE方式去做,没用 ...

  9. Swift不可变数组

    Objective-C编写了2个不同的类来区分不可变数组(NSArray)和可变数组(NSMutableArray): Swift通过使用常量和变量来区分不可变数组和可变数组. 只要将数组定义为常量, ...

随机推荐

  1. Windows中杀死占用某个端口的进程

    Windows中杀死占用某个端口的进程 netstat -ano | findstr //列出进程极其占用的端口,且包含 80 tasklist | findstr taskkill -PID < ...

  2. Codeforces Round #357 (Div. 2) E 计算几何

    传说中做cf不补题等于没做 于是第一次补...这次的cf没有做出来DE D题的描述神奇 到现在也没有看懂 于是只补了E 每次div2都是hack前2~3题 终于打出一次hack后的三题了...希望以后 ...

  3. 【IOS笔记】Event Delivery: The Responder Chain

    Event Delivery: The Responder Chain  事件分发--响应链 When you design your app, it’s likely that you want t ...

  4. Bootstrap页面布局6 - BS把已有的固定宽度布局转换成响应式布局

    首先引入文件bootstrap-responsive.css <link href="bootstrap/css/bootstrap-responsive.css" rel= ...

  5. 【转】基于laravel制作APP接口(API)

    这篇文章主要介绍了基于laravel制作APP接口(API)的相关资料,需要的朋友可以参考下 前期准备 前言,为什么做以及要做个啥本人姓小名白,不折不扣编程届小白一名,但是自从大一那会儿接触到编程这件 ...

  6. php---分组函数group_concat()

    group_concat()函数总结 group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比较抽象,难以理解. 通俗点理解,其实是这样的:group_c ...

  7. 流媒体学习一-------mediastreamer2 的简介

    Mediastreamer2 是一个功能强大且小巧的流引擎,专门为音视频电话应用而开发.这个库为linphone中所有的接收.发送多媒体流提供处理,包括音/视频捕获,编码和解码,渲染. 特性: 接收. ...

  8. Java字符串的那些事儿。。。。

    计划围绕以下几个方面 1.内存 2.正则表达式 3.String.format 4.编码 1.内存 先来看个经典的例子 public class Blog { public static void m ...

  9. 用Js的eval解析JSON中的注意点

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...

  10. C# Socket编程 同步以及异步通信

    套接字简介:套接字最早是Unix的,window是借鉴过来的.TCP/IP协议族提供三种套接字:流式.数据报式.原始套接字.其中原始套接字允许对底层协议直接访问,一般用于检验新协议或者新设备问题,很少 ...