黑马程序员——OC基础05—Foundation框架

来源:互联网 发布:招商加盟网络推广方案 编辑:程序博客网 时间:2024/05/02 04:36

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

一、Foundation框架
1.Foundation就是类、方法、函数、文档等按照一定的逻辑组织起来的集合。,它是mac和iOS的基础。
2.Foundation中常用的类有:

NSString(字符串);NSArray (数组);NSNumber(数字);NSDate(日期);NSData(数据);NSDictionary(字典);和他们分别对应的子类 NSMutableStringNSMutableArrayNSMutableDictionary

父类和子类的区别:父类不可变,内容不可修改,而子类的空间是可变的,内容可以修改,而子类可以继承父类所有的方法。

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={34};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>比较两个点是否相同(xy)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,heigthfloat 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中是否包含CGPointCGRectContainsPoint(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);  
0 0
原创粉丝点击