您的位置:首页 > 其它

Foundation的学习-NSString、NSArray、NSDictionary、NSSet

2015-01-20 14:49 316 查看
cocoa程序编写主要用到了两个框架:Foundation和ApplicationKit(UIKit)框架。Foundation框架主要定义了一些基础类,供程序员使用。而UIKit主要是一些用户界面设计的类,用于Mac开发使用此库。

Foundation框架的学习:NSNumber的使用NSString字符串的使用
NSArray数组的使用NSDictionary字典的使用
NSSet集合的使用

1.NSNumber的常用方法

创建一个NSNumber对象:NSNumber *num = [NSNumber numberWithInt:10];

还原成基本数据类型:int i = [num intValue];

父类是NSValue,可以用于封装指针类型和Object类型。

2.NSString字符串和NSMutableString的常用方法

OC语言的字符串必须以@开头,长度不可变。

有子类NSMutableString,长度是可变的。

(1)创建一个字符串:NSString *str1 = @“string”;

(2) 创建一个格式化字符串:NSString *str2 = [NSString stringWithFormat:@“我说,%@”,str1];

//str==我说,string

(3)比较字符串内容是否相等:if( [ str1 isEqualToString:str2 ] ) { NSLog(@“same content”);}

(4) 比较是否为同一个对象(字符串指针是否相同):if ( str1 == str2 ){NSLog(@“same Pointer”);
}

(5) 比较字符串的大小:NSComparisonResult result = [str1 caseInsensitiveCompare:str2];

result=-1代表str1《str2,result=1代表str1》str2,result=0代表相等。这是根据ASIIC码进行比较的。

(6)字符串的长度:[str length];

(7) 字符串的转换:[str1 uppercaseString];//全部大写

[str1 lowercaseString];//全部小写

[str1 capitalizedString];//首字母大写,其它字母变小写

(8)转换成基本数据类型:NSString *str3 = @“3.13”; int i = [str3 intValue];

(9)字符串转换成数组:NSString *str4 = @“abc bcd xyz”;

NSArray *array = [str4 componentsSeparatedByString:@“ ”];//以空格分割转成数组

(10)字符串的截取:NSString *str5 = @“abcdefg”;

NSString *sub1 = [str subStringToIndex:2];//sub1==ab(不包含第二个)

NSString *sub2 = [str subStringFromIndex:2];//sub2 == cdefg(包含第二个)

NSRange range;

range.location = 4;

range.length = 2;//或者NSRange range = {4, 2};

NSString *sub3 = [str subStringWithRange:range];//sub==ef(从第四个开始,包含第四个,长度为2)

(11)字符串的拼接:NSString *str6 = @“abc”;NSString *str7 = @“xyz”;

NSString *appstr1 = [[NSString alloc]initWithFormat:@“%@%@”,str6,str7];//abcxyz

NSString *appstr2 = [str6 stringByAppendingFormat:@“%@”,str7];//abcxyz

NSString *appstr3 = [str6 stringByAppendingString:str7];//abcxyz

(12)查找字符串

NSString *link = @“abcdefgtarget=_blankxyz”;

NSRange range = [link rangeOfString:@“target=_blank”];

NSLog(@“%@”,NSStringFromRange(range));//{6,13}//查找某字符串的位置和长度

if(range.location != NSNotFound){ NSLog(@“founded”); }//查找link中是否包含该字符串

(13)NSMutableString的增删改

NSMutableString *ms = [[NSMutableString alloc]initWithFormat:@“abc”];

[ms insertString:@“…xyz” atIndex:3]; //abc…xyz插入

[ms replaceCharactersInRange:NSMakeRange(0,3) withString:@“efg”]; //efg…xyz替换

[ms deleteCharactersInRange:NSMageRange(0,3)]; //…xyz删除

3.NSArray数组和NSMutableArray的常用方法

NSMutableArray是NSArray的子类。

注意:数组中不可以存放基本数据类型,只能存放类的实例(对象)。如果需要将基本数据类型、结构体放入数组中,需要通过NSNumber、NSValue进行数据的“封装”。

NSArray的常用方法:

(1)NSArray数组的创建

NSArray *arr1 = [NSArray arrayWithObject:@“One”];

NSArray *arr2 = [NSArray arrayWithObjects:@“One”,@“Two”,nil];

NSArray *arr3 = [NSArray arrayWithArray:arr2]; //@{@“One”,@“Two”}

NSArray *arr4 = [NSArray initWithArray:arr1]; //One

(2)获取数组中的元素个数和访问元素

int count = [arr2 count]; //count == 2

NSString *string = [arr2 objectAtIndex:1]; //Two

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

NSArray *arr5 = [arr2 arrayByAddingObject:@“end”];

(4)用指定的字符串把数组中元素连接起来,组成字符串

NSString *string = [arr5 componentsJoinedByString:@“,”]; //One,Two,end

(5)数组中是否包含某对象

BOOL isContain = [arr5 containsObject:@“end”]; //YES / 1

(6)查询指定对象在数组中的位置,返回索引下标。如果不存在,返回NSNotFound

NSInteger index = [arr5 indexOfObject:@“end”]; // 2

(7)返回数组中最后一个元素

NSString *last = [arr5 lastObject]; // end

NSMutableArray的常用方法:

(NSArray的增删改是新生成一个对象,而NSMutableArray是在原来数组上增删改查)

(1)创建一个新数组

NSMutableArray *ma = [NSMutableArray array];

NSMutableArray *ma2 = [NSMutableArray arrayWithCapacity:5]; //给5个内容,这样方便编译器进行内存优化

(2)新增,插入,删除

NSMutableArray *ma3 = [NSMutableArray arrayWithObjects:@“One”,@“Two”,@“end”,nil];

[ma3 addObject:@“Three”]; //ma3:{One,Two,Three}

[ma3 insertObject:@“Four” atIndex:2];

[ma3 removeLastObject];

[ma3 removeObject:@“end”];

[ma3 removeObjectAtIndex:3];

(3)删除多个元素

NSArray *deleteArray = [NSArray arrayWithObjects:@“One”,@“Two”,nil];

[ma3 removeObjectsInArray:deleteArray];

(4)替换指定下标的元素

[ma3 replaceObjectAtIndex:0 withObject:@“replace”];

(5)移除所有对象

[ma3 removeAllObjects];

数组的遍历:快速枚举

for(NSString *string in array){

NSLog(@“string:”,string);

}

或for(id string in array){ //当不确定数组元素的类型时,可以选择用id

NSLog(@“string:”,string);

}

4.NSDictionary字典的使用

字典的键值都不能为空nil。key必须是唯一的。

(1)初始化

NSDictionary *dic1 = [NSDictionary dictionaryWithObject:@“value” forKey:@“k1”];

(2)初始化两个元素

NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:@“v1”,@“k1”,@“v2”,@“k2”,nil];

NSDictionary *dic3 = [NSDictionary dictionaryWithDictionary:dic1];

(3)获取字典数量

NSInteger count = [dic count];

(4)通过key获取对应的value对象

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

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

NSEnumerator *enumerator = [dic keyEnumerator];

(6)获取所有键的集合

NSArray *keys = [dic allKeys];

(7)获取所有值的集合

NSArray *values = [dic allValues];

NSMutableDictionary可变字典的常用方法:

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

NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@“v1”,@“k1”,@“v2”,@“k2”,nil];

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

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

[dic2 addEntriesFromDictionary:dic3];

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

[dic2 setValue:@“v3” forKey:@“k3”];

(4)初始化一个空的可变字典

NSMutableDictionary *dic1 = [NSMutableDictionary dictionary];

(5)将空字典1对象内容设置与字典2对象相同

[dic1 setDictionary:dic2];

[dic1 removeObjectForKey:@“k1”];//将字典中k1对用的值删除

NSArray *array = [NSArray arrayWithObjects:@“k1”,nil];

[dic2 removeObjectsForKeys:array];//根据指定数组(key)移除字典的内容

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

遍历字典:

(1)快速枚举

for(id key in dic){

id obj = [dic objectForKey:key];

NSLog(@“%@”,obj);

}

(2)通过枚举类型枚举

NSEnumerator *enumerator = [dic keyEnumerator];

id key = [enumerator nextObject];

while (key) {

id obj = [dic objectForKey:key];

NSLog(@“%@”,obj);

key = [enumerator nextObject];

}

5.NSSet集合的使用

它是一组单值对象的集合,且NSSet实例中的元素时无序的,同一个对象只能保存一个。同样分为可变和不可变集合。

(1)常用方法(使用方法和上面字典、数组等都类似)

initWithObjects

initWithArray

initWithSet

int count = [set count];

(BOOL)[set containObject:@“2”];

BOOL isIntersect = [set1 intersectsSet:set2];//set1和set2存在相同元素的对象,则返回YES

BOOL idEqual = [set1 isEqualToSet:set2];//set1和set2元素完全匹配,则返回YES

BOOL isSubset = [set1 idSubsetOfSet:set2];//set1时集合set2的子集合,则返回YES

NSSet *set1 = [NSSet setWithObject:@“One”,nil];

NSSet *appSet1 = [set1 setByAddingObject:@“Two”];

NSSet *appSet2 = [set1 setByAddingObjectsFromSet:set2];

NSArray *array2 = [NSArray arrayWithObject:@“end”];

NSSet *appSet3 = [set1 setByAddingObjectsFromArray:array2];

可变集合NSMutableSet,继承自NSSet:

(1)常用方法

[set1 minusSet:set2];//set1去除与set2相同的元素

[set1 intersectSet:set2];//set1只剩下与set2的相同元素(交集)

[set1 unionSet:set2];//并集

[set1 setSet:set2];//将空的集合set1设置为set3中的内容

[set1 addObjectsFromArray:array];//根据数组的内容增加集合中的对象

[set1 removeObject:@“1”];

[set1 removeAllObjects];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐