Foundation的学习-NSString、NSArray、NSDictionary、NSSet
2015-01-20 14:49
369 查看
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];
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];
相关文章推荐
- Objective C - Foundation - NSNumber & NSString & NSArray & NSDictionary & NSSet
- 黑马程序员_Foundation学习之NSSet、NSDictionary、NSNumber、NSValue、NSDate
- NSString,NSArray,NSSet,NSDictionary
- Foundation使用示例(NSString、NSMutableString 、NSArray、NSMutableArray 、NSDictionary 、NSMutableDictionary)
- OC--Foundation-NSString,NSArray,NSSet
- iOS基础知识:Objective-C 之 NSString,NSArray,NSDictionary,NSSet
- Fouandation(NSString ,NSArray,NSDictionary,NSSet) 中常见的理解错误区
- 【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词
- Object-C 开发学习笔记三:NSArray,NSdictionary,NSSet
- 黑马程序员--NSArray,NSString,NSSet,NSDictionary,NSNumber,NSValue 及其可变(NSMutable..)
- OC学习笔记 Foundation 集合类 NSArray和NSSet
- ios学习第二天(四)对象之容器NSArray,NSSet,NSDictionary和它们的子类
- NSString NSArray NSDictionary NSSet 中的部分方法
- 【Foundation】18-集合类NSArray、NSSet、NSDictionary
- OC中的NSArrAY。NSString。NSDictionary 。NSSet小知识点
- IOS开发NSArray,NSSet,NSDictionary,NSString操作总结
- 黑马程序员—— Foundation框架NSArray、NSSet、NSDictionary、NSNumber、NSDate、NSValue
- NSString/NSArray/NSDictionary/NSSet方法的总结
- ios学习--用法总结:NSArray,NSSet,NSDictionary
- object c基础, 基本类型(NSString,char*NSDate,NSData),集合NSArray,NSMutableArray,NSDictionary,NSMutableDictionary,NSSet,NSMutableSet