OC_数组与字典

数组

知识点

1.NSArray

2.NSMutableArray

===========   NSArray  不可变数组  =================

1、OC数组和c数组的区别

1)NSArray是一个类,是任意类型对象地址的集合(存储对象的引用)

不能存放简单的基本数据类型(int, float, NSInteger…)

2)C数组时相同类型变量的有序结合,可以保存任意类型的数据

3)NSArray下标越界不会有警告,但是运行会直接报错

2、数组创建

1)如何创建一个空数组

(1)NSArray *array2 = [[NSArray alloc] init];

(2)NSArray *array2 = [NSArray array];

2)通过指定对象创建数组

//可以有多个对象

NSArray *array2 = [[NSArray alloc] initWithObjects:@"aaa",@"bbb", nil];

NSArray *array2 = [NSArray arrayWithObjects:@"aaa",@"bbb", nil];

//只能有一个对象

NSArray *array2 = [NSArray arrayWithObject:@"ccc"];

3)通过指定数组创建数组

(1)NSArray *newArray = [[NSArray alloc] initWithArray:old];

(2)NSArray * newArray = [NSArray arrayWithArray:old];

4)通过简单的方式创建数组

//@[] 快速创建数组

NSArray *array3 = @[@"333”,dog,@“444"];

3.    NSArray * array = [str componentsSeparatedByString:@" "];

//component 组合, separate 分割

//分割原字符串,创建很多小子串,创建一个数组,存储小子串地址,返回数组地址

//原字符串不变

//利用分隔符拼接数组元素,生成新字符串

NSString * newStr = [array componentsJoinedByString:@"*"];

4.获取数组元素个数

NSUInteger count = [array3 count];

5.通过索引获取相应的元素

id obj = [array3 objectAtIndex:1];

id obj = array3[下标];

6.通过对象获取在数组中的索引

NSUInteger index = [array3 indexOfObject:@"444"];

7.取出数组的最后一个元素或者第一个元素

//取数组的第一个元素

[array3 firstObject];

array3[0];

[array3 objectAtIndex:0];

//取数组的最后一个元素

[array3 lastObject];

8.判断数组中是否包含某个元素

BOOL isContains = [array3 containsObject:@"4444"];

=========     NSMutableArray可变数组    =============

1.NSMutableArray : NSArray

//凡是NSArray的方法,NSMutableArray都能用。

//凡是传参传NSArray*,也可以传NSMutableArray*

2.NSMutableArray的作用

//NSMutableArray是一个类;

//数组元素不能是基本数据类型(比如int);

//数组元素只能是对象的引用(指针);

//OC语言里引用和指针是一个概念

3.如何创建一个NSMutableArray

1)创建空数组

NSMutableArray *array = [[NSMutableArray alloc] init];

2)创建有对象的数组

NSMutableArray * array = [[NSMutableArray alloc] initWithObjects:@"data1",@"data2",nil];

4.可变数组添加元素

1)向可变数组里面添加元素

//添加一个对象(在数组里面最后一个对象后面添加)

[array addObject:对象];

2)如何向可变数组中插入一个元素

[array insertObject:@"nihao" atIndex:0];

3)重置数组

[array setArray:@[@"One", @"Two"]];

5.根据数组下标取值

NSString *firstObj = [array objectAtIndex:0];

6.取出数组元素个数

NSUInteger count = [array count];

7、如何删除元素

1)删除指定索引的元素

[array removeObjectAtIndex:下标];

2) 删除最后一个元素

[array removeLastObject];

3)根据指定对象来删除元素

[array removeObject: 要删除的元素];

4)删除所有元素

[array removeAllObjects];

8.替换元素

[array replaceObjectAtIndex:0 withObject:@"hello"];

9.交换两个元素

[array exchangeObjectAtIndex:0 withObjectAtIndex:1];

=========================================================

练习:

对数组@[@“aa”,@“bb”,@“cc”,@“dd”]进行逆序;

=============  NSArray数组的遍历 ===========

1.通过下标遍历数组

for (int i = 0; i < [array count]; i++)

{

NSLog(@"%d-%@",i,array[i]);

}

2.快速枚举法(for in)

/*

for (数组里面的类型 in 遍历的数组) {

<#statements#>

}

*/

for (NSString *s in array)

{

}

3、NSEnumerator  枚举器

1)objectEnumerator消息

作用:正序输出所有元素

2)reverseObjectEnumerator消息

作用:逆序输出所有元素

//返回一个枚举器

NSEnumerator *enumerator = [array objectEnumerator];

//获取枚举器所有的元素

NSArray *a = [enumerator allObjects];

NSString *s = nil;

//nextObject指向第一个元素

s = [enumerator nextObject];

********************************************************************************************

字典

1.NSDictionary 类

2.NSMutableDictionary 类

********************************************************************************

//NSDictionary 和 NSMutableDictionary

//NSMutableDictionary : NSDictionary

//两个凡是

===========    NSDictionary不可变字典    ================

1、什么是字典(key-value)

字典是也是一种集合结构,功能与我们现实中的字典工具一样

2、字典的元素是什么

任意类型的对象地址构成键值对

3、什么是键值对

键值对是由key和value构成必须一一对应

键值对中的key必须保证是唯一的

4、字典的存储方式

字典是一种无序保存的集合

5、如何查找值

根据键值对中的key找到相应的值

数组(array):有序,不唯一,有索引

字典(Dictionary):无索引,有键值, 键不重复,对应的值可以重复

===================NSDictionary不可变字典====================

//创建字典对象

(1)创建空字典

NSDictionary *dic = [[NSDictionary alloc] init];

NSDictionary *dic = [NSDictionary dictionary];

(2)创建带有对象的字典

NSDictionary * dict = [[NSDictionary alloc]

initWithObjectsAndKeys:@"One", @"1", @"Two", @"2", @"Three",

@"3", @"One",  @"4", nil];

NSDictionary * dict2 = @{@"1" : @"One", @"2" : @"Two", @"3" :

@"Three"};

(3)通过传入键,返回值的地址,如果没有对应的键,返回nil

NSString * value = [dict objectForKey:@"3"];

NSString * value = dict[@"3"];

(4)返回键值对总数

NSUInteger count = [dict count];

(5)返回所有的键

NSArray * keys = [dict allKeys];

(6)返回所有的值

NSArray * values = [dict allValues];

==============NSMutableDictionary可变字典=======

//重置字典

[mutableDict setDictionary:@{@"1" : @"One", @"2" : @"Two", @"3" : @"Three”}];

//增/或修改

[mutableDict setObject:@"Four" forKey:@"4"];

//删

//通过键删除值

[mutableDict removeObjectForKey:@"3"];

//删除所有键值对

[mutableDict removeAllObjects];

======================================

8、遍历字典内容

1)枚举器法:

<1>键的遍历:

keyEnumerator消息

作用:获取所有的key值

NSEnumerator *emunerator = [dict keyEnumerator];

while (id obj = [emunerator nextObject]) {

NSLog(@“%@“, obj);

}

<2>值的遍历

objectEnumerator 消息

2)快速枚举法:得到的是键

for (id key in dict)

{

NSLog(@“key — %@, value = %@, key, [dict objectForKey:obj]); // 得到了键就得到了值

}

时间: 2024-10-14 10:03:34

OC_数组与字典的相关文章

Swift学习笔记四:数组和字典

最近一个月都在专心做unity3d的斗地主游戏,从早到晚,最后总算是搞出来了,其中的心酸只有自己知道.最近才有功夫闲下来,还是学习学习之前的老本行--asp.net,现在用.net做项目流行MVC,而不是之前的三层,既然技术在更新,只能不断学习,以适应新的技术潮流! 创建MVC工程 1.打开Visual studio2012,新建MVC4工程 2.选择工程属性,创建MVC工程 3.生成工程的目录 App_Start:启动文件的配置信息,包括很重要的RouteConfig路由注册信息 Conten

Swift 之数组与字典

http://www.cocoachina.com/swift/20151230/14802.html 说到数组和字典,只要是编过程的小伙伴并不陌生.在Swift中的数组与字典也有着一些让人眼前一亮的特性,今天的博客就来窥探一下Swift中的Array和Dictionary.还是沿袭之前的风格,在介绍Swift中的数组时,我们会对比一下ObjC中的数组和字典,因为ObjC也是iOS开发的主要语言不是.无论是简单还是复杂的程序,数组和字典的用处还是比较多的,这两者虽然是Swift的基础内容,但是也

OC - 数组、字典、集合

数组是一个有序的集合,OC中的数组只能存储对象类型,对于对象的类型是没有限制的 NSArray:不可变数组 :对象创建好以后,数组中的元素个数不能发生变化 NSSMutableArray : 可变数组 : 对象创建好以后,数组中的元素可以灵活进行增删改操作 NSArray *names = [[NSArray alloc] initWithObjects:@"frank", @123, @"monkey", nil]; 注意 : nil作为数组存放元素的结束标志,多

shell数组和字典

shell数组和字典 #!/bin/bash echo "shell定义字典" #必须先声明 declare -A dic dic=([key1]="value1" [key2]="value2" [key3]="value3") #打印指定key的value echo ${dic["key1"]} #打印所有key值 echo ${!dic[*]} #打印所有value echo ${dic[*]} #遍

Swift学习笔记数组与字典

swift中数组和字典都是以结构体的形式实现的. 首先,这个很奇葩,我不知道为什么这样设计,这样是出于一个什么样的考虑. 在C#中使用字典: Dictionary<int, string> dic = new Dictionary<int, string>(); Dictionary<int, string> dic1 = dic; dic.Add(1,"123"); dic1[1]="456"; Console.WriteLin

OC_ NSDictionary ,NSMutableDictionary 字典

1 数组与字典的区别 数组: 1>存放一组有序对象的集合 2> 通过index下标找对应的对象 3> 数组中对象可以重复 字典: 1>存放一组无序key-value的集合 2> 通过key找到对应的value 3>字典key是唯一的,但是不同的value可以重复 2 字典的初始化 使用一个类方法创建一个空字典(常用) NSDictionary *dic1 = [NSDictionary dictionary]; (常用) 通过字面量去创建不可变数组和不可变字典 NSAr

OC-Day4____数组与字典

2015.3.3 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //利用i值遍历数组 NSArray *array = [NSArray arrayWithObjects:@"one",@"two",@"three",@"four",@"five", n

Swift中的元组,数组,字典

元组(Tuples)与数组和字典的差别较大,元组是把多个值组成一个复合值: let http 404 Error = (404,"Not Found") //http 404 的类型是(Int,String),值是(404,"Not Found") 可以在定义元组的时候给单个元素命名,这时候元组的数组有一些相似: let http200Status = (statusCode: 200, description: "OK") 数组(Array)和

Objective-C中把数组中字典中的数据转换成URL

可能上面的标题有些拗口,学过PHP的小伙伴们都知道,PHP中的数组的下标是允许我们自定义的,PHP中的数组确切的说就是键值对.而在OC我们要用字典(Dictionary)来存储,当然了Java用的是Map来存储键值对.下面我们将实现一个极为实用的小例子,网络请求有get和post方法,两种方法各有其优点.在表单提交时Post方法用的更多一些,URL传值则会用到Get方法.在用PHP编程的时候肯定会经常拼接url来传参或者请求,在IOS开发中会向服务器通过url请求一些数据,所以对url的拼接是少