美文网首页
数组和字典

数组和字典

作者: PeterKock | 来源:发表于2015-10-12 18:20 被阅读945次

为什么用集合
有时候系统中有很多的对象,我们想要有条理的将其进行管理
首先想到的就是使用数组来管理一批数据
但是数组有局限性,例如下标的检查,我们需要自己进行
Cocoa提供了一系列的集合类可以实现这些批量数据管理的功能
并且提供了很多便利的方法可以对数据进行管理

NSArry类
1.NSArray是一个Cocoa类,用来存储对象的有序列表
2.NSArray中可以放入任何类型的Objective-C对象
3.NSArray中不能存放C语言类型
4.NSArray对象作为一个容器来容纳其他的对象,并且可以通过NSArray对这些对象进行管理
5.NSArray对象也可以当做方法参数或返回值使用

使用NSArry
使用NSArray类时需要注意,不能在其中存放nil,因为nil是一个NSArray结束的标识
通过NSArray的类方法arrayWithObjects:来创建一个NSArray对象

NSArray *array = [NSArray arrayWithObjects : @”one”, @”two”, @”three”, nil ];

获取集合中对象的个数(主要用在循环遍历数组)

-(unsigned long) count;
数组个数.png

获取指定索引处的对象(通过数组的下标来获取对象)

-(id) objectAtIndex : (unsigned long) index;
数组的内容.png 通过循环取得所有的数组对象

当访问NSArray时,索引超出元素个数之后会报一个异常出来
所以最好检查一下索引是否越界,然后再进行调用

下标越界信息提示

可变数组添加对象

-NSArray和NSString一样,创建的是不可变大小的数组,容量固定
-如果想要使用容量变化的数组,可以使用NSMutableArray
-同样的NSMutableArray使用arrayWithCapacity:方法来创建

 +(id)arrayWithCapacity:(unsigned long)numItems;                                

使用addObject方法在数组最后添加对象

-(void) addObject :  (id) anObject;
两种创建方式

现在创建一个学生类定义属性,声明一个便利初始化函数
用学生类创建对象,并存入数组中

创建一个学生类.png 便利初始化函数.png 方法的具体实现.png

在main函数中实例化对象,添加到数组中


实例化对象,使用.png

可变数组删除对象
可以使用removeObjectAtIndex方法来删除指定所引出的对象
-(void) removeObjectAtIndex : (unsigned long)index;

这是都似乎删除数组中对象的方法.png 删除数组中对象的方法.png

可变数组的其他操作
用指定索引出插入对象

两种方式添加图片.png

替换指定位置处的对象
-(void)replaceObjectAtIndex:(NSUInteger) withObject:(id)

替换.png

数组的排序
为可变数组排序,常用三种方式
-使用sortUsingComparator方法
-使用sortUsingDescriptors方法
-使用sortUsingSelector方法

升序 降序

快速枚举

//使用id数据类型
for(id obj in array){      
    NSLog(@“%@\n”,obj);
}
//使用静态类型
for(NSString * str in array){
    NSLog(@“%@\n”,str);
}
for方式和快速枚举方法.png

NSDictionary字典
-字典是关键字和其定义所构成的集合
-NSDictionary在给定的关键字下存储一个数据,该数据可以是任何-Objective-C类型
-可以通过这个关键字来访问这个相应的数据
-使用dictionaryWithObjectsAndKeys方法来创建一个字典
-(id) dictionaryWithObjectsAndKeys:(id) obj,…;

创建字典

字典是一个无序的集合


断点调试

使用objectForKey方法获取字典中的值
-(id) objectForKey : (id) aKey;

获取字典中的值.png 获取字典的所有value值

字典中遍历
-字典无法直接使用索引、枚举器或快速枚举来遍历字典中的元素
-字典包含一个方法allKeys,返回所有的Key所构成的一个NSArray
-可以遍历这个NSArray得到每一个Key,然后再根据Key得到相应的数据
-不可变字典和可变字典遍历方式一致

NSSet类

使用NSSET类

NSNumbers创建和使用

NSNull
结合中不能直接放入nil,

相关文章

  • 数组和字典的关系 -好基友

    JSON数据格式: 数组和字典的关系 -好基友,套来套去 字典套 数组套 字典 { "succes...

  • 数组和字典

    为什么用集合有时候系统中有很多的对象,我们想要有条理的将其进行管理首先想到的就是使用数组来管理一批数据但是数组有局...

  • 100-SQLite基础

    iOS中的数据存储方式 Plist(NSArray\NSDictionary),只能存储数组,字典,但是数组和字典...

  • iOS 数组和字典NSLog及po输出中文

    前言 当你搜索“iOS 数组和字典NSLog输出中文” 时会找到:这个 iOS开发——输出中文(字典和数组)这个 ...

  • iOS常见的崩溃

    数组越界 字面量数组和字典插入nil值 字典 Unrecognized Selector NaN崩溃 富文本初始化...

  • Swift 02 字典

    字典 创建字典和创建数组一样创建同时就要制定key和value值的类型 字典的修改和增加 字典的删除 字典的遍历

  • iOS数组,字典,集合

    数组 1、固定数组 2、可变数组 3、数组转换 字典 1、不可变字典 2、可变字典 集合 //NSSet 是无序的...

  • iOS 各种排序

    数组排序 数组中字典排序 数组中字典按照某个value排序 排序方法

  • Swift入坑系列—集合类型

    数组(Arrays) 字典(Dictionaries) 数组(Arrays) 在OC里面,NSArray和NSMu...

  • Swift 基本语法(四)— 集合类型

    集合 数组 字典 数组 ** 数组遍历方式:for in, 和 forEach; forEach有两个特征:1...

网友评论

      本文标题:数组和字典

      本文链接:https://www.haomeiwen.com/subject/dwkocttx.html