------- android培训、java培训、iOS培训、.Net培训、期待与您交流! ----------
框架:众多功能/API的集合
Foundation框架:在OS X下的Mac操作系统中大约有80个框架为所有程序开发奠定基础的框架
Foundation框架中大约有125个可用的头文件,要想使用Foundation框架中的功能,这么一句即可: #import
实际上导入了其他所有Foundation框架中的头文件
Foundation框架提供了非常多好用的类,比如
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
//定义两个字符串
NSString *str1 = @"bc";
NSString *str2 = @"Bcc";
//比较字符串大小,默认区分大小写
// NSComparisonResult result=[str1 compare:str2];
// NSCaseInsensitiveSearch 不区分大小写,且 NSNumericSearch 比较的是字符串的长度
NSComparisonResult result=[str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];
switch (result) {
case NSOrderedAscending:
NSLog(@"str1str2");
break;
default:
break;
}
}
return 0;
}
NSString *str1 = @"http://www.baidu.com";
//判断字符串前缀
if ([str1 hasPrefix:@"http://"]||[str1 hasPrefix:@"https://"]){
NSLog(@"这是一个网址");
}else{
NSLog(@"这不是一个网址");
}
NSString *str2 = @"xxxxx.doc";
//判断字符串后缀
if ([str2 hasSuffix:@".jpg"]||[str2 hasSuffix:@".png"]||[str2 hasSuffix:@".jpeg"]||[str2 hasSuffix:@".gif"]) {
NSLog(@"这是一个图片");
} else {
NSLog(@"这不是一个图片");
}
// 012345678
NSString *str =@"黑马IOS学院 ";
//截取字符串
//从XX位置开始,到最后结束(包含XX位置)
NSString *newStr= [str substringFromIndex:8];
NSLog(@"newStr=%@",newStr);
//从起始,到XX位置(不包含XX位置)
newStr = [str substringToIndex:8];
NSLog(@"newStr=%@",newStr);
//截取指定长度及位置的字符串
//求出所要截取的字符串起始及末尾的位置
NSUInteger loc= [str rangeOfString:@">"].location+1;
NSUInteger len= [str rangeOfString:@""].location-loc;
NSRange range={loc,len};
NSLog(@"%@",NSStringFromRange(range));
//截取指定起始位置及长度的字符串
newStr = [str substringWithRange:range];
NSLog(@"%@",newStr);
//替换字符串
NSString *str1=@"http://www*ithema*com";
newStr =[str1 stringByReplacingOccurrencesOfString:@"*" withString:@"."];
newStr =[newStr stringByReplacingOccurrencesOfString:@"ithema" withString:@"baidu"];
NSLog(@"%@",newStr);
NSString *str =@"3.14159";
for (int i=0; i<[str length]; i++) {
//获取OC字符串的每个字符
unichar c= [str characterAtIndex:i];
printf("%c ",c);
}
//OC字符串与其他数据类型的转换
float f=[str floatValue];
f=f+3;
//OC字符串与C语言字符串的转换
NSString *str1=@" hello world! ";
const char *ch= [str1 UTF8String];
NSString *str2=[NSString stringWithUTF8String:ch];
NSLog(@"----%@----",str2);
//去除所有的空格
str2=[str1 stringByReplacingOccurrencesOfString:@" " withString:@""];
//去除首尾空格
str2=[str1 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSMutableString是NSString的子类
NSMutableString和NSString的区别:
NSString是不可变的, 里面的文字内容是不能进行修改的
NSMutableString是可变的,里面的文字内容可以随时更改
NSMutableString能使用NSString的所有方法
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
//定义一个存储空间和内容可变的字符串
NSMutableString *str=[NSMutableString stringWithFormat:@"Jack"];
//添加子字符串
[str appendString:@"&Rose"];
NSLog(@"%@",str);
//创建一个空的可变字符串
NSMutableString *str1=[NSMutableString string];
for (int i=0; i<10; i++) {
[str1 appendString:@"itcast "];
}
NSLog(@"%@",str1);
}
return 0;
}
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建一个空字符串
// NSMutableString *str = [NSMutableString string];
//格式化创建一个字符串
NSMutableString *str1=[NSMutableString stringWithFormat:@"http://"];
NSLog(@"%@",str1);
//格式化添加子字符串
[str1 appendFormat:@"**baidu.com/%d",100];
NSLog(@"%@",str1);
//删除子字符串
[str1 deleteCharactersInRange:NSMakeRange(7, 2)];
NSLog(@"%@",str1);
//插入子字符串
[str1 insertString:@"www." atIndex:7];
NSLog(@"%@",str1);
//替换子字符串
[str1 replaceCharactersInRange:NSMakeRange(11, 5) withString:@"ithema"];
NSLog(@"%@",str1);
//覆盖原字符串
str1.string=@"http://";
NSLog(@"%@",str1);
}
return 0;
}
NSArray是OC中的数组类,开发中建议尽量使用NSArray替代C语言中的数组
NSArray的使用注意:
只能存放任意OC对象,并且是有顺序的
不能存储非OC对象,比如int/float/double/char/enum/struct等
它是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再往里面添加元素
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
//数组的存储空间和内容不可改变
//只能存储OC对象
//1)创建一个空数组,没有意义
NSArray *arr1=[NSArray array];
//2)创建只有一个元素的数组
NSArray *arr2=[NSArray arrayWithObject:@"one"];
//3) 创建含有多个元素的数组
// (常用方法)
NSArray *arr3=[NSArray arrayWithObjects:@"one",@"two",@1, nil];
//4)调用对象方法创建数组
NSArray *arr4=[[NSArray alloc]initWithObjects:@"three",@"four",[NSNull null], nil];
//5)用一个数组创建另一个数组
NSArray *arr5=[NSArray arrayWithArray:arr3];
}
return 0;
}
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSArray *arr3=[NSArray arrayWithObjects:@"one",@"two",@1, nil];
//获取数组的长度
NSLog(@"%lu",arr3.count);
//根据下标,获取对应的对象
NSString *str= [arr3 objectAtIndex:1];
NSLog(@"%@",str);
//根据对象,获取对应的下标
NSUInteger loc= [arr3 indexOfObject:@"one"];
NSLog(@"%lu",loc);
//判断数组中是否包含了某个元素
if ([arr3 containsObject:@"three"]) {
NSLog(@"包含了该元素");
} else {
NSLog(@"不包含该元素");
}
//简化方式创建数组
NSArray *arr1=@[@"one",@'a',@"'a'",@1,@"2"];
for (int i=0; i
NSArray *array = @[@"one",@"zbz",@"cgx",@"aj",@"cjk"];
// 写入文件/Users/Linhan/Desktop/array.plist
if([array writeToFile:@"/Users/Linhan/Desktop/array.plist" atomically:YES]){
NSLog(@"写入成功");
}
else{
NSLog(@"写入失败");
}
// 读取文件
array=[NSArray arrayWithContentsOfFile: @"/Users/Linhan/Desktop/array.plist"];
NSLog(@"%@",array);
NSArray *array=@[@1,@2,@3,@4,@5];
//将数组元素连接成字符串
NSString *str=[array componentsJoinedByString:@"-"];
NSLog(@"%@",str);
NSString *str1=@"400-800-12580";
//将字符串分割成数组
array= [str1 componentsSeparatedByString:@"-"];
NSLog(@"%@",[array firstObject]);
NSLog(@"%@",[array lastObject]);
NSLog(@"%@",array[1]);
NSMutableArray是NSArray的子类
NSArray是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再往里面添加元素
NSMutableArray是可变的,随时可以往里面添加/更改/删除元素
int main(int argc, const char * argv[]) {
@autoreleasepool {
//1、创建数组
//1)创建一个空数组
NSMutableArray *arr1=[NSMutableArray array];
//2)创建的时候初始化一个元素
NSMutableArray *arr2=[NSMutableArray arrayWithObject:@"one"];
//3)创建的时候初始化多个元素
NSMutableArray *arr3=[NSMutableArray arrayWithObjects:@"one",@"two",@"three",@"four", nil];
//4)创建一个数组,并指定长度
NSMutableArray *arr4=[NSMutableArray arrayWithCapacity:5];
//2、添加元素
[arr1 addObject:@"two"];
//插入元素到指定位置
[arr2 insertObject:@"five" atIndex:0];
//3、删除元素
//根据对象内容删除
[arr3 removeObject:@"three"];
NSLog(@"%@",arr3);
//根据位置删除
[arr3 removeObjectAtIndex:1];
NSLog(@"%@",arr3);
//全部删除
// [arr3 removeAllObjects];
//4、修改元素
[arr3 replaceObjectAtIndex:1 withObject:@2];
NSLog(@"%@",arr3);
//简化修改,同C语言一样
arr3[0]=@"two";
NSLog(@"%@",arr3);
//5、查找元素
BOOL isSearch= [arr3 containsObject:@"two"];
NSLog(@"%d",isSearch);
//6、交换元素
// NSMutableArray *array=@[@1,@2,@3,@4]; //这种是不可改变数组,不能交换
NSMutableArray *array=[NSMutableArray arrayWithObjects:@1,@2,@3,@4,@5, nil];
//可以交换数组元素
[array exchangeObjectAtIndex:0 withObjectAtIndex:4];
NSLog(@"%@",array);
}
return 0;
}
NSDictionary翻译过来叫做”字典”
日常生活中, “字典”的作用:通过一个拼音或者汉字,就能找到对应的详细解释
NSDictionary的作用类似:通过一个key,就能找到对应的value
NSDictionary是不可变的,一旦初始化完毕,里面的内容就无法修改
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
//1、创建一个空字典,因为不可变,没有意义
// NSDictionary *dict1=[NSDictionary dictionary];
//2、创建只有一组键值对的字典
NSDictionary *dict2=[NSDictionary dictionaryWithObject:@"张三" forKey:@"zs"];
NSLog(@"%@",dict2);
//3、创建多组键值对的字典 (注意:value和key值,都必须是对象)
NSDictionary *dict3=[NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2",@"value3",@"key3", nil];
NSLog(@"%@",dict3);//以%@格式打印字典,控制台输出一个{ },无序输出
//4、快速创建一个字典,格式:@{...,key值:value值,...}
//key值不能重复,重复不会报错,但后添加的也不能保存到字典中
NSDictionary *dict4=@{@"zs":@"zhangsan",@"ls":@"lisi",@"ww":@"wangwu",@"zs":@"zhaosi"};
NSLog(@"%@",dict4);
//5、获取字典的长度
NSLog(@"%lu",dict4.count);
//6、根据key值获取value值
NSLog(@"%@",[dict4 objectForKey:@"zs"]);
//7、字典遍历问题
//快速枚举法(增强for,输入forin即可)
for (NSString *str in dict4) {
NSLog(@"%@=%@",str,[dict4 objectForKey:str]);
}
//使用block的方式进行遍历
[dict4 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@-->%@",key,obj);
}];
}
return 0;
}
//1)用简写的形式定义一个字典
NSDictionary *dict =@{@"zbz":@"zhangbozhi",@"cgx":@"chenguanxi",@"cjk":@"canlaoshi"};
//2)用简写的形式获取key对应的value
NSLog(@"%@",dict[@"cgx"]);
//3)把字典保存到文件中/Users/Linhan/Desktop/
BOOL isWrite= [dict writeToFile:@"/Users/Linhan/Desktop/dict.plist" atomically:YES];
if (isWrite) {
NSLog(@"写入成功");
} else {
NSLog(@"写入失败");
}
//4)从文件中读取字典
NSDictionary *readDict=[NSDictionary dictionaryWithContentsOfFile:@"/Users/Linhan/Desktop/dict.plist"];
NSLog(@"%@",readDict);
void test(){
//读取dict.plist文件
NSDictionary *readCitys=[NSDictionary dictionaryWithContentsOfFile:@"/Users/Linhan/Desktop/dict.plist"];
//遍历字典
[readCitys enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
for (NSString *str in obj) {
NSLog(@"city=%@",str);
}
}];
//获取某个数组
NSArray *arr=readCitys[@"hebei"];
NSLog(@"hebei=%@",arr);
NSLog(@"city=%@",[arr firstObject]);
}
void shengshiliandong(){
//省 市 县
//创建数组接收省的数组元素
// NSArray *hebeiarr=[NSArray arrayWithObjects:@"baoding",@"shijiazhuang", nil];
// NSArray *fujianarr=[NSArray arrayWithObjects:@"putian",@"quanzhou", nil];
//创建数组接收市的数组元素
NSArray *baoding=[NSArray arrayWithObjects:@"mancheng",@"quyang", nil];
//创建字典接收省的数组元素
NSDictionary *hebeisheng=[NSDictionary dictionaryWithObjectsAndKeys:baoding,@"baodingshi",@"shijiazhuang",@"shijiazhuang", nil];
NSDictionary *fujiansheng=[NSDictionary dictionaryWithObjectsAndKeys:@"putianshi",@"putian",@"quanzhoushi",@"quanzhou",nil];
//创建字典接收
NSDictionary *citys=[NSDictionary dictionaryWithObjectsAndKeys:hebeisheng,@"hebei",fujiansheng,@"fujian", nil];
[citys enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@=%@",key,obj);
}];
//写入文件
[citys writeToFile:@"/Users/Linhan/Desktop/dict.plist" atomically:YES];
[citys enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@-->%@",key,obj);
}];
}
NSMutableDictionary是NSDictionary的子类
NSDictionary是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再往里面添加元素
NSMutableDictionary是可变的,随时可以往里面添加/更改/删除元素
#import
int main(int argc, const char * argv[]) {
@autoreleasepool {
//1)可变字典的创建
NSMutableDictionary *dict1=[NSMutableDictionary dictionary];
NSMutableDictionary *dict2=[NSMutableDictionary dictionaryWithCapacity:5];
//简化创建,会有警告,不影响运行,适合NSDictionary
NSMutableDictionary *dict3=@{@"zs":@"zhangsan",@"li":@"lisi",@"ww":@"wangwu"};
//2)给可变字典添加键值对
[dict1 setObject:@"zhangsan" forKey:@"zs"];//因为key值重复了,所以添加不上
[dict1 setObject:@"zhaosi" forKey:@"zs"];
[dict1 setObject:@"wangwu" forKey:@"ww"];
//3)删除
// [dict1 removeObjectForKey:@"ww"];
// [dict1 removeAllObjects];
// NSLog(@"%@",dict1);
//4)修改
[dict1 setObject:@"fengjie" forKey:@"zs"];
//简化修改
dict1[@"ww"]=@"chenguanxi";
NSLog(@"%@",dict1);
//5)查找
NSArray *allKey=[dict1 allKeys];
if([allKey containsObject:@"ww"]){
NSLog(@"存在ww的key,其value为%@",dict1[@"ww"]);
}
}
return 0;
}
NSRange是Foundation框架中比较常用的结构体
NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围
NSRange有2个成员
NSUInteger location : 表示该范围的起始位置
NSUInteger length : 表示该范围内的长度
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSRange range;//结构体变量
// NSRange *r;//结构体指针
//1)通过结构体成员变量赋值
range.location=1;
range.length=4;
//2)定义的时候赋值
NSRange range2={2,4};
//3)强制类型转换
range=(NSRange){3,5};
//4)OC中新增的:创建结构体变量并赋值
NSRange range4=NSMakeRange(4, 4);
//查看结构体成员变量的值
// NSLog(@"%lu,%lu",range4.location,range4.length);
//以字符串的方式查看结构体成员变量的值
NSLog(@"%@",NSStringFromRange(range4));
}
return 0;
}