Swift数组总结

//
//  main.swift
//  Swift数组总结
//
//  Created by Goddog on 15/7/14.
//  Copyright (c) 2015年 Goddog. All rights reserved.
//

import Foundation

println("Swift数组对存储数据有具体要求。 不同于 Objective-C的NSArray和NSMutableArray类,他们可以存储任何类型的实例而且不提供他们返回对象的任何本质信息。 在 Swift 中,数据值在被存储进入某个数组之前类型必须明确,方法是通过显式的类型标注或类型推断,而且不是必须是class类型。例如: 如果我们创建了一个Int值类型的数组,我们不能往其中插入任何不是Int类型的数据。 Swift 中的数组是类型安全的,并且它们中包含的类型必须明确。")

//MARK: - 定义数组
var books:[String] = ["论语","孟子","大学","中庸"]  //注意:貌似在XCODE6之后不能用var books1:String[]写法了
var number = [1,"one",2,"TWO"]
//使用泛型语句声明数组
var nation : Array<String>
//使用简化语句声明数组
var name : [String]
//创建一个空数组,并将该空数组赋值给myArry
nation = Array<String>()
//创建一个包含10个“Swift”元素的数组,并讲该数组赋值给names
name = Array<String>(count: 2, repeatedValue: "Swift")
println("指定类型定义数组:\(books),无指定类型定义数组:\(number)")

//MARK: - 数组长度和访问数组中某个元素
println("books数组长度是:\(books.count),  books数组第一个元素是:\(books[0])")

//MARK: - 向数组中追加元素
name.append("OC")
println("向数组中追加元素:\(name)")

//MARK: - 直接向数组最后添加一个数组
name += ["Android"]
println("添加元素:\(name)")

//MARK: - 使用Index 向数组中插入元素
name.insert("Ruby", atIndex: 1)
println("使用Index插入元素\(name)")

//MARK: - 使用removeAtIndex 删除某个数组元素  注意 removeAtIndex() 是有返回值的,返回的就是删除的元素
name.removeAtIndex(0)
println("删除指定元素:\(name)")

//MARK: - 删除最后一个元素
name.removeLast()
println("删除最后一个元素:\(name)")

//MARK: - 使用enumerate函数来遍历数租 返回值是一个元组
for bg in enumerate(name)
{
    println("元素下标:\(bg.0),  元素值:\(bg.1)")
}
//或
for var i=0;i<name.count;i++
{
    println("元素下标:\(i),  元素值:\(name[i])")
}

//MARK: - 使用构造语法来创建数组
//创建一个Int数据类型构成的空数组:
var nums=[Int]();
//创建一个自定义数据类型构成的空数组:
class Student  // 创建一个类 ,后面会具体说,这里就是为了得到这个类的类型
{
    //数据成员和成员函数略
    
}
var students = [Student]();  // students 是一个Student 类型的数组

//MARK: - 创建特定大小并且所有数据都被默认值得数组
var  num = [Int](count: 5, repeatedValue:3);  // 有5 个元素  元素的值都是 3
println(num);

//MARK: - 数组的赋值和拷贝行为
/*
特点:数组的拷贝行为只有在必要时才会发生
将一个数组(Array)实例赋给一个变量或常量,或者将其作为参数传递给函数或方法调用,在事件发生时数组的内容不会被拷贝。当你在一个数组内修改某一元素,修改结果也会在另一数组显示。
数组的拷贝行为仅仅当操作有可能修改数组长度时才会发生
解决数组拷贝问题: 确保数组的唯一性
*/
var testarr1:[Int]=[1,2,3,4,5];
var testarr2=testarr1;
println(" testarr1:\(testarr1)   testarr2:\(testarr2)");
testarr1[1]=1000;//改变testarr1 中第二个(下标为1)的元素的值为 1000
println(" testarr1:\(testarr1)  testarr2:\(testarr2)");

testarr2.removeLast();//删除数组的最后一个元素,改变数组长度,数组发生拷贝行为
println(" testarr1:\(testarr1)  testarr2:\(testarr2)");

testarr1[1]=2;
println(" testarr1:\(testarr1) testarr2:\(testarr2)");

//MARK: - 清空数组
name[0..<name.count] = []
println("清空之后:\(name)")
Swift数组对存储数据有具体要求。 不同于 Objective-C的NSArray和NSMutableArray类,他们可以存储任何类型的实例而且不提供他们返回对象的任何本质信息。 在 Swift 中,数据值在被存储进入某个数组之前类型必须明确,方法是通过显式的类型标注或类型推断,而且不是必须是class类型。例如: 如果我们创建了一个Int值类型的数组,我们不能往其中插入任何不是Int类型的数据。 Swift 中的数组是类型安全的,并且它们中包含的类型必须明确。
指定类型定义数组:[论语, 孟子, 大学, 中庸],无指定类型定义数组:[1, one, 2, TWO]
books数组长度是:4,  books数组第一个元素是:论语
向数组中追加元素:[Swift, Swift, OC]
添加元素:[Swift, Swift, OC, Android]
使用Index插入元素[Swift, Ruby, Swift, OC, Android]
删除指定元素:[Ruby, Swift, OC, Android]
删除最后一个元素:[Ruby, Swift, OC]
元素下标:0,  元素值:Ruby
元素下标:1,  元素值:Swift
元素下标:2,  元素值:OC
元素下标:0,  元素值:Ruby
元素下标:1,  元素值:Swift
元素下标:2,  元素值:OC
[3, 3, 3, 3, 3]
 testarr1:[1, 2, 3, 4, 5]   testarr2:[1, 2, 3, 4, 5]
 testarr1:[1, 1000, 3, 4, 5]  testarr2:[1, 2, 3, 4, 5]
 testarr1:[1, 1000, 3, 4, 5]  testarr2:[1, 2, 3, 4]
 testarr1:[1, 2, 3, 4, 5] testarr2:[1, 2, 3, 4]
清空之后:[]
Program ended with exit code: 0

Swift技术学习 https://www.itkc8.com

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值