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

——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,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);  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值