——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一、Foundation框架
1.Foundation就是类、方法、函数、文档等按照一定的逻辑组织起来的集合。,它是mac和iOS的基础。
2.Foundation中常用的类有:
NSString(字符串);
NSArray (数组);
NSNumber(数字);
NSDate(日期);
NSData(数据);
NSDictionary(字典);
和他们分别对应的子类 NSMutableString、NSMutableArray、NSMutableDictionary。
父类和子类的区别:父类不可变,内容不可修改,而子类的空间是可变的,内容可以修改,而子类可以继承父类所有的方法。
1)NSString 字符串
A: 字符串比较大小 compare
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1=@"abc";
NSString*str2=@"aqwerrtaberrtyhjkijk";
NSComparisonResult result =[str1 compare:str2];
switch (result) {
case -1: //NSOrderedAscending
NSLog(@"str1<str2") ;
break;
case 1: //NSOrderedDescending
NSLog(@"str1>str2") ;
break;
case 0: //NSOrderedSame
NSLog(@"str1==str2") ;
break;
default:
break;
}
判断字符串是否真的相等,isEqualToString
B. NSString前后缀 prefix suffix
if [URL has prefix :@"http://"]{
NSLog(@"这是一个网址");
}
C. 字符串的查找
让字符串在元字符串中查找首次出现的位置。
NSString *str1=@"abc";
NSString*str2=@"aqwerrtabcerrtyhjkijk";
NSRange range=[str2 rangeOfString:str1];
//结构体别名 结构体变量
// 《A rangeOfString B》 代表在A中找到B首次出现的位置
if (range.location!=NSNotFound) {
NSLog(@"%lu,%lu",range.location,range.length);
}else
NSLog(@"%@未能在%@中找到",str1,str2);
D. NSRange的使用
NSRange r1 = NSMakeRange(2, 4); //第一个参数为.location 第二个参数为.length
NSString *str = @"学习OC";
NSRange range = [str rangeOfString:@"学习"]; //查找某个字符串在str字符串中的位置和长度
NSLog(@"loc = %ld, len = %ld",range.location, range.length);
给变量初始化时,通常会采用下面方法:
NSRange range1=NSMakeRange(5,3);
NSRange range2={.location=2,.length=4};
//输出查看range的值
NSRange r4=NSMakeRange(8,3);
NSLog(@"%@",NSStringFromRange(r4));
E 字符串的截取
NSString *str5=@"asdf我爱你塞北的雪adsd";
str5=[str5 substringFromIndex:5];
//从序号5的位置一直到结束,包含5的位置
str5=[str5 substringToIndex:5];
//从开始位置到5的位置结束,不含5的位置
NSRange r6={3,4};
NSString* Str6=[str5 substringWithRange:r6];
//从序号为3的位置,输出字符长度为4的字符串,即“f我爱你”
F.字符串的替换
NSString *str=@"adsafd dadfa fdads daf";
str=[str stringByReplacingOccurrencesOfString:@"a" withString:@"*"];//用*代替 a
str=[str stringByReplacingOccurrencesOfString:@" " withString:@""];//吸收空格
NSLog(@"==%@",str);
//目的是将字符串中的汉字输出。
NSString *str5=@"asdf我爱你塞北的雪jasdkh23";
NSUInteger loc=[str5 rangeOfString:@"f"].location+1;
NSUInteger len=[str5 rangeOfString:@"j"].location-loc;
NSRange r6={loc,len};
NSString* newString=[str5 substringWithRange:r6];
//取出指定位置的字符
unichar c = [str3 characterAtIndex:2];
NSLog(@"%c",c);
G.OC中字符串与C中的字符串相互转换
//c语言字符串转化为OC字符串
NSString *s3 = [NSString stringWithUTF8tring:"name"];
//OC字符串转化为C语言字符串
const charchar *cs = [s3 UTF8String];
H.字符串的拼接
//请输入十次itcast并以空格格开;
NSMutableString *str6 = [ NSMutableString string];
for (int i=0; i<10; i++) {
[str6 appendString:@” itcast”];
2)NSMutableString
NSString的子类,NSMutableString定义的变量在堆区,可读可写。
NSString *str=@“Jack”;
str=@“Rose”;
此时的 str的指向发生了变化,空间地址不一样
A创建一个空字符串
NSMutableSting *str=[NSMutableString string];
B.初始化
NSMutableString *str1=[NSMutableString stringWithFormat:@“Jack”];
3)NSArray 和NSMutableArray
A 与int *p[]的区别 ,它只能存放一种数据类型,不能方便动态的添加和删除元素,
而NSArray可以存放任意OC对象,有顺序,不能存放C对象。一旦初始化后也是不能改变的,
B 空数组的创建
NSArray *arr =[NSArray array]
NSArray *arr4= [[NSArray allocc]initWithObject:@"Tom",nil];//调用对象方法
NSArray *arr2= [NSArray arrayWithObjects:@"Lose",@"Jack", nil];//一个元素 的创建
NSArray *arr4=[NSArray arrayWithArray *arr2];//用一个已经存在的数组创建
NSArray *arr3=[NSArray
arrayWithObject:@"Peter",nill];//多个元素的创建
NSArray*arr1=@[@"1",@"2",@"3",@"4"];//快速创建变量并且进行初始化
//注意:数组元素不能为nil,否则遇见nil则停止输出,如果真的想用,用[NSNull,nil]
C.
NSLog(@"%@",arr.count)//获得数组的个数
NSString *str1=[arr objectAtIndex:2];//将序号为2的元素赋值给字符串
NSUInteger loc = [arr indexOfObject:@"Peter"]; 取得字符串在数组中的地址
NSString *str=arr[3]; //重新指向数组
BOOL isYES=[arr containsObject:"Peter"];//是否含字符串
NSLog(@"====%@,%@,,,,,%ld",arr,str1,loc)
D. 快速访问数组元素
NSString str= arr[i];
E. 遍历数组元素
NSArray *arr=@[@"ERIC",@"Peter",@"hello",@5];
for (int i=0; i<arr.count; i++) {
NSLog(@"%@",arr[i]);
} //普通下表访问
for (NSString *str in arr) {
NSLog(@"%@",str);//for 循环增强型
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx,BOOL *stop){
if (idx==4) {
*stop=YES;//作用相当于break
}else NSLog(@"idx=%ld,obj=%@",idx,obj);
}];//快速枚举法
F.NSArray 写入文件 及读取文件
BOOL isYES=[arr3 writeToFile:@"/Users/mac/Desktop/Jian.plist" atomically:YES];
if (isYES){
NSLog(@“写入正确”);
}
NSArray *readArr=[NSArray arrayWithContentsOfFile:@"/Users/mac/Desktop/Jian.xml"];
NSLog(@"%@",readArr);
G. 分割字符串
NSString *str0=@"400-800-30298#400-300-12345";
NSArray *arr11=[str0 componentsSeparatedByString:@"#"];
NSArray *arr0= [str12 componentsSeparatedByString:@"-"];
NSLog(@"%@---%@---%@",arr11[1],[arr11 first Object],[arr11 last Object];
NSArray arr=@[@"jack",@"rose",@"lily"];
NSString*str= [arr componentsJoinedByString:@"-"];
//把数组元素用-连接起来
H.
NSMutableArray
//1.创建数组并初始化
NSMutableArray *arr= [NSMutableArray arrayWithObjects:@"hello",@2,@5,@"world", nil];
//2.增加元素
//1)按照数组内容
[arr addObject:@"Peter"];
NSLog(@"%@",arr);
//2)按照下标
[arr insertObject:@"Eric" atIndex:3];
NSLog(@"%@",arr);
//3.删除元素
//1)按照数组内容
[arr removeObject:@"hello"];
NSLog(@"------>%@",arr);
//2)按照下标
[arr removeObjectAtIndex:4];
NSLog(@"_____%@",arr);
//3)全部删除
[arr removeAllObjects];
NSLog(@"%@",arr);
//4.修改元素
[arr replaceObjectAtIndex:3 withObject:@"Peter"];
NSLog(@"%@",arr);
//5.查找元素
BOOL isResearch= [arr containsObject:@"Peter"];
NSLog(@"%d",isResearch);
//6.调换元素
[arr exchangeObjectAtIndex:0 withObjectAtIndex:3];
NSLog(@"%@",arr);
}
4)NSDictionary
```
//NSDictionary的使用
//1.创建空字典
NSDictionary *dic0= [NSDictionary dictionary];
NSLog(@"%@",dic0);
//2.创建一族键值的字典
NSDictionary*dic1= [ NSDictionary dictionaryWithObject:@"黄苹果"forKey:@"key"];
//3.创建多组键值的字典
NSLog(@"%lu",dic1.count);//返回空建的个数
NSDictionary *dic2= [NSDictionary dictionaryWithObjectsAndKeys:@"shijiazhuang",@"sjz",@"baoding",@"bd",nil];
NSLog(@"%@",dic2);
//4/快速创建
NSDictionary *dict3=@{@"ZX":@"zhangshan",@"xpd":@"Eric",@"jy":@"jiayou",};
NSLog(@"%@",dict3);
//5.通过key值确认value值
NSArray *arr14=[dict3 allKeys];
NSLog(@"!!!!!!%@",arr14);
NSString *str13=[dict3 objectForKey:@"ZX"];
NSLog(@"+++++%@",str13);
// NSLog(@"%@",dict3[@"ZX"]);
//6.遍历
for (NSString *key in dict3) {
NSLog(@"-------%@==%@",key,[dict3 objectForKey:key]);
}
//block方法
[dict3 enumerateKeysAndObjectsUsingBlock:^(id key,id value, BOOL *stop){
NSLog(@"%@---------%@",key,value);
}];
//7、获取元素
NSLog(@"*****%@",dict3[@"ZX"]);
//8.把字典保存到文件中去,并且读取出
BOOL(isWrite)= [dict3 writeToFile:@"/USers/mac/Desktop/fight.plist" atomically:YES];
if (isWrite) {
NSLog(@"写入成功");
}
NSDictionary* dict4=[NSDictionary dictionaryWithContentsOfFile:@"/USers/mac/Desktop/fight.plist"];
NSLog(@"////////%@",dict4);
应用:
9.把河北省(石家庄市、保定市)和山东省(青岛市、济南市)
NSArray *hebeiarr=[NSArray arrayWithObjects:@"shijiazhuang",@"baoding", nil];
NSArray *shandarr=[NSArray arrayWithObjects:@"qingdao",@"jinan", nil];
NSDictionary *city= [NSDictionary dictionaryWithObjectsAndKeys:hebeiarr,@"Hebei",shandarr,@"Shandong", nil];
//写入文件
BOOL iswrite=[city writeToFile:@"/Users/mac/Desktop/city.plist" atomically:YES];
if (iswrite) {
NSLog(@"写入成功");
}
//读取文件
NSDictionary *readCity=[NSDictionary dictionaryWithContentsOfFile:@"/Users/mac/Desktop/city.plist"];
NSLog(@"+++++========%@",readCity);
return 0;
NSMutableDictionary
//1.创建空字典
NSMutableDictionary *dict1= [NSMutableDictionary dictionary];
NSMutableDictionary *dict1= [NSMutableDictionary dictionaryWithObjectsAndKeys:@"value",@"key",@"value1",@"key1", nil];
//2.增加键值对
[dict1 setValue:@"value" forKey:@"key"];
//3.删除键值对
[dict1 removeObjectForKey:@"key"];
[dict1 removeAllObjects];
//4.修改
[dict1 setObject:@"value1" forKey:@"key"];
dict1[@"key"]=@"XXXX" ;//将key值修改为XXXX
//5.查找
NSArray * arr=[dict1 allKeys];
if (arr containsObject:@"key1") {
NSLog(@"value=%@",dict1[@"key1"]);
}
3.Foundation的结构体类型
1)Foundation框架常用结构体NSRange\CGRange、NSPoint\CGPoint、NSSize\CGSize、 NSRect\CGRect 的使用
//CGPoint的使用
1>CGPoint\NSPoint一般用于表示点元素的坐标位置。CGPoint比较常用,因为CGPoint可以跨平台。
2>可以使用NSMakePoint和CGPointMake方法创建CGPoint和NSPoint对象。开发中CGPointMake比较常用。例:
NSPoint p = NSMakePoint(10,45);
//从一个结构体变量获取坐标
float x = p.x;
float y = p.y;
3>比较两个点是否相同(x、y)
Bool b = CGPointEqualToPoint(CGPointMake(10,10),CGPointMake(10,10));
原点可以使用CGPointZero,相当于CGPointMake(0,0);同CGSizeZero,CGRectZero,如:
CGRect r4 = {CGPointZero,CGSizeMake(100,90)};
//NSSzie的使用
1>CGSize和NSSize表示一个UI元素的尺寸。
2>可以使用CGSizeMake和NSMakeSize方法创建CGSize和NSSize对象。如:
NSSize s = NSMakeSize(10,45)
从一个结构体变量获取width,heigth
float width = s.width;
float height = s.heigth;
//CGRect 的使用
一个结构体由点、大小组成 ,存储一个矩形的起止点、长度和宽度;
1>CGRect和NSRect表示一个UI元素的位置和尺寸。
2>可以通过CGRectMake和NSMakeRect方法创建CGRect和NSRect对象。如:
CGRect r1 = CGRectMake(0,0,150,100);
NSLog(@"x=%f, y=%f, width=%f, height=%f", r1.origin.x, r1.origin.y, r1.size.width, r1.size.height)
3>比较两个Rect是否相同
CGRectEqualToRect(CGRect rect1,CGRect rect2);
4>判断CGRect中是否包含CGPoint
CGRectContainsPoint(CGRect rect,CGPoint point);
NSRect r1 = NSMakeRect(0, 0, 100, 120);
NSRect r2 = {0,0,100,120};
//对结构体最底层的成员赋值
NSRect r3;
r3.origin.x = 0.0;
r3.origin.y = 0.0;
r3.size.width = 100.0;
r3.size.height = 120.0;
//打印结构体的方法
NSString *s = NSStringFromPoint(point1);
NSLog(@"%@",s);
NSString *s1 = NSStringFromRect(rect1);
NSLog(@"%@",s1);