您的位置:首页 > 职场人生

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

2015-05-20 23:07 671 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

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);

}

一般的枚举<
4000
/p>
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培训、期待与您交流! -------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: