黑马程序员——IOS基础(Foundation框架二)



1.数组的概念和常用方法

     Foundation中的数组(NSArray,NSMutableArray)是一组有序的对象集合,通过索引下标取到数组中的各个元素。与字符串相同,数组也有可变和不可变数组之分。此外,数组中不可以存放基本数据类型,只能存放类的实例(对象)。如若需要将基本数据类型、结构体放入数组中,需要通过NSNumber、NSValue进行数据的“封装”;

 

不可变数组----NSArray

数组的初始化

NSArray*firstArray = [NSArray arrayWithObject:@"one"];

// 多个元素初始化时,注意nil作为数组的结束

NSArray*secondArray = [NSArray arrayWithObjects:@"one", @"two",nil];

NSArray*thirdArray = [NSArray arrayWithArray:secondArray];

NSArray*FourArray = [NSArray arrayWithContentsOfFile:path];


常用方法

NSArray *array= [NSArray arrayWithObjects:@"a", @"b", @"c",nil];

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

NSIntegercount = [array count];

//根据下标访问对象

NSString*firstObj = [array objectAtIndex:0];

//在原来的数组上追加对象,返回一个新的数组对象

NSArray*addArray = [array arrayByAddingObject:@''ddd"];

//用指定的字符串将数组中的元素连接起来

NSString*arrayStr = [array componentsJoinedByString:@","];

//数组中是否包含某对象

BOOL isContain= [array containsObject:@"bbb"];

//查询指定对象在数组中的元素,如果没此元素,返回NSNotFound

NSIntegerindex = [array indexOfObject:@"ccc"];

//获取数组中最后一个元素

NSString*lastString = [array lastObject];

 

可变数组----NSMutableArray,它继承自NSArray

常用方法

//初始化,设定元素个数为5,但可以更改

NSMutableArray*mutableArray = [NSMutableArray arrayWithCapacity:5];

//向数组中添加一个元素

[mutableArrayaddObject:@"aaa"];

//向数组中指定下标插入元素

[mutableArrayinsertObject:@"ccc" atIndex:0];

//移除指定元素

[mutableArrayremoveObject:@"aaa"];

//移除指定下标的元素

[mutableArrayremoveObjectAtIndex:0];

//向数组中添加数组

[mutableArrayaddObjectsFromArray:array];

//  替换指定的下标元素

[mutableArrayreplaceObjectAtIndex:0 withObject:@"replace"];

//  移除所有对象

[mutableArrayremoveAllObjects];

 

遍历数组

遍历数组常规方法

NSArray *array= [NSArray arrayWithObjects:@"a", @"b", @"z",nil];

int length =[array count];

for (int i =0; i < length; i++) {

    NSString *element = [array objectAtIndex:i];

    NSLog(@"%@", element);

} //遍历的性能较低

快速枚举

for (NSString*string in array) {

    NSLog(@"found %@", string);

}  //  遍历的性能高

for (id stringin array) {

    NSLog(@"found %@", string);

}  //  当不确定数组的元素的类型时,可以选择用id


2.字典的概念和常用方法

    Foundation中的字典(NSDictionary,NSMutableDictionary)是由键--值对组成的数据集合。正如,我们在字典里查找单词的定义一样。通过key(键),查找对象value(值),key通常是字符串对象,也可以是其他任意类型对象。在一个字典对象中,key的值是唯一的。此外,字典对象的键和值不可以为空(nil),如果需要在一个字典对象中表示一个空值,可以使用NSNull对象。

 

不可变字典----NSDictionary

字典的初始化

NSNumber*numObj = [NSNumber numberWithInt: 100];

//  以一个元素初始化

NSDictionary*dic = [NSDictionary dictionaryWithObject:numObj forKey:@"key"];

//初始化两个元素

NSDictionary*dic = [NSDictionary dictionaryWithObjectsAndKeys:numObj,@"valueKey",numObj2, @"valueKey2", nil];

//初始化新字典,新字典包含otherDic

NSDictionary*dic = [NSDictionary dictionaryWithDictionary:otherDic];

//以文件内容初始化字典

NSDictionary*dic = [NSDictionary dictionaryWithContentsOfFile:path];


常用方法

//获取字典数量

NSIntegercount = [dic count];

//通过key获取对应的value对象

NSObject*valueObj = [dic objectForKey:@"key"];

//将字典的key转成一个枚举对象,用于遍历

NSEnumerator*enumerator = [dic keyEnumerator];

//获取所有键的集合

NSArray *keys= [dic allKeys];

//获取所有值的集合

NSArray*values = [dic allValues];

 

可变字典----NSMutableDictionary继承自NSDictionary

常用方法

//初始化一个空的可变字典(注意以下代码前后无关联性)

NSMutableDictionary*dic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"v1",@"key1", @"v2", @"key2", nil];

NSDictionary*dic3 = [NSDictionary dictionaryWithObject:@“v3” forKey:@"key3"];

//向字典2对象中添加整个字典对象3

[dic2addEntriesFromDictionary:dic3];

//向字典2对象中追加一个新的key3和value3

[dic2 setValue:@"value3"forKey:@"key3"];

//初始化一个空的可变字典

NSMutableDictionary*dic1 = [NSMutableDictionary dictionary];

//将空字典1对象的内容设置为字典2对象相同

[dic1setDictionary:dic2];

[dic1removeObjectForKey:@"key1"];//将字典中key1对应的值删除

NSArray *array= [NSArray arrayWithOjbects:@"key1", nil];

[dic2removeObjectsForKeys:array];//根据制定的数组(key)移除字典2的内容

[dic1removeAllObjects]; //  移除字典所有对象

 

遍历字典

快速枚举

for (id key indic) {

    id obj = [dic objectForKey:key];

    NSLog(@"%@", obj);

}

一般的枚举

NSArray *keys= [dic allKeys];

int length =[keys count];

for (int i =0; i < length ; i++) {

    id key = [keys objectAtIndex:i];

    id obj = [dic objectForKey:key];

    NSLog(@"%@", obj);

}

通过枚举类型枚举

NSEnumerator*enumerator = [dic keyEnumerator];

id key =[enumerator nextObject];

while(key) {

    id obj = [dic objectForKey:key];

    NSLog(@"%@", obj);

    key = [enumerator nextObject];

}

 

2.集合概念和常用方法

       在Foundation框架中,提供了NSSet类,它是一组单值对象的集合,且NSSet实例中元素是无序,同一个对象只能保存一个,并且它也分为可变和不可变对象(可变集合对象,NSMutableSet)。

 

不可变集合----NSSet

NSSet的初始化

//类似与数组的构建,直接创建一个集合

NSSet *set1 =[[NSSet alloc] initWithObjects:@"one", @"two", nil];

//通过数组的构建集合

NSArray *array= [NSArray arrayWithObjects:@"1", @"2", @"3",nil];

NSSet *set2 =[[NSSet alloc] initWithArray:array];

//通过已有集合构建集合

NSSet *set3 =[[NSSet alloc] initWithSet:set2];

NSSet的常用方法(BOOL )

//集合3中对象的个数

int count =[set3 count];

//以数组的形式返回集合3中所有的对象

NSArray*allObjects = [set3 allObjects];

//返回集合3中的任意一个对象

id object =[set3 anyObject];

//集合4中是否包含内容为2的字符串对象,如果包含返回YES,否则返回NO

BOOL isContain= [set4 containsObject:@"2"];

//集合4中与集合2中是否存在有相同元素的对象,如果有返回YES,否则为NO

BOOLisIntersect = [set4 intersectsSet:set2];

//集合4与集合5的元素是否完全匹配,如果匹配返回YES,否则为NO

BOOL isEqual =[set4 isEqualToSet:set5];

// 集合4是否是集合5的子集合,如果是返回YES,否则为NO

BOOL isSubset= [set4 isSubsetOfSet:set5];

//创建一个新的集合2,集合2有两个对象(a和b)

NSSet *set1 =[NSSet setWithObjects:@"a", nil];

NSSet *set2 =[set1 setByAddingObject:@"b"];

//通过已有集合7和集合8,创建一个新的集合9

NSSet *set7 =[NSSet setWithObjects:@"a", nil];

NSSet *set8 =[NSSet setWithObjects:@"z", nil];

NSSet *set9 =[set7 setByAddingObjectsFromSet:set8];

//通过已有的集合10和数组对象,创建一个新的集合11

NSArray *array= [NSArray arrayWithObjects:@"a", @"b", @"c",nil];

NSSet *set10 =[NSSet setWithObjects:@"z", nil];

NSSet *set11 =[set10 setByAddinObjectsFromArray:array];

 

可变集合----NSMutableSet,它继承自NSSet

常用方法

//创建一个空的集合(注意以下代码前后无关联性)

NSMutableSet*set1 = [NSMutableSet set];

NSMutableSet*set2 = [NSMutableSet setWithObjects:@"1", @"2", nil];

NSMutableSet*set3 = [NSMutableSet setWithObjects:@"a", @"2", nil];

//集合2“减去”集合3中的元素,集合2最后元素只有1,且为1

[set2minusSet:set3];

//集合2与集合3中的元素的交集,集合2最后元素只有1个,且为2

[set2intersectSet:set3];

//集合2与集合3中的元素的并集,集合2最后元素只有3个,且为1,2,a

[set2unionSet:set3];

//将空集合1设置为集合3中的内容

[set1setSet:set3];

//根据数组的内容删除集合中的对象

[set2addObjectsFromArray:array];

[set2removeObject:@"1"];

[set2removeAllObjects];

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值