黑马程序员 OC语言 - 7 结构体、NSString、NSArray、NSMutableArray

来源:互联网 发布:淘宝店招是什么 编辑:程序博客网 时间:2024/05/16 12:54

若排版有错误,请查看PDF版:http://pan.baidu.com/s/1bnzW6jt



一、 结构体

    NSRange(location length)

    NSPoint\CGPoint

     NSSize\CGSize

 NSRect\CGRect (CGPint CGSize)

 

1.      NSRange(location length)

表示范围:位置(location)、长度(length)

 

     // @"ilove oc"

     // 表示"love"的范围

     NSRange r1 = {2, 4}; // 不用

     NSRange r2 = {.location = 2, .length =4};//不用

     NSRange r3 = NSMakeRange(2,4);// 掌握

    

     // 查找某个字符串在str中的范围(rangeOfString:

     NSString *str = @"i love oc";

     NSRange range = [str rangeOfString:@"java"];//如果找不到,length=0location=NSNotFound==-1

NSLog(@"loc = %ld,length=%ld", range.location, range.length);

 

2.      NSPoint/CGPoint

表示点:坐标(x, y)

 

     CGPoint p1 =NSMakePoint(10,10);

NSPoint p2 = CGPointMake(20, 20);// 最常用

 

3.      NSSize/CGSize

表示区域大小:宽度(width)、高度(height)

 

     NSSize s1 =CGSizeMake(100,50);

     NSSize s2 =NSMakeSize(100,50);

CGSize s3 = NSMakeSize(200, 60);

 

4.      NSRect/CGRect (CGPint CGSize)

表示区域:点(CGPoint)、区域大小(CGSize)

 

            CGRect r1 = CGRectMake(0,0,100, 50);

     CGRect r2 = { {0, 0}, {100, 90}};

CGRect r3 = {p1, s2};

     // 使用CGPointZero(原点)等的前提是添加CoreGraphics框架

     // CGSizeZero

     // CGRectZero

CGRect r4 = {CGPointZero,CGSizeMake(100, 90)};

 

将结构体转为字符串

     //NSString *str = NSStringFromPoint(p1);

     //NSString *str = NSStringFromSize(s3);

     NSString *str = NSStringFromRect(r1);

         

NSLog(@"%@", str); // {{0, 0}, {100, 50}}

 

     CGRectmyRect(CGFloat x, CGFloat y, CGFloat width, CGFloat height)

     {

         CGRect rect;

         rect.origin.x = x;

         rect.origin.y = y;

         rect.size.width = width;

         rect.size.height = height;

         

         return rect;

}

 

5.      CGPointEqualToPoint、CGRectContainsPoint等

使用这些CGPointEqualToPoint(比较两点是否相同)、CGRectContainsPoint(点是否在某区域内)等函数的前提是添加CoreGraphics框架

 

     // 比较两个点是否相同(xy

  BOOL b =CGPointEqualToPoint(CGPointMake(10,10), CGPointMake(10,10));

     //CGRectEqualToRect(<#CGRect rect1#>, <#CGRectrect2#>)

     //CGSizeEqualToSize(<#CGSize size1#>, <#CGSizesize2#>)

    

BOOL b2 =CGRectContainsPoint(CGRectMake(50,40,100, 50), CGPointMake(60,45));

 

二、 NSString

1.      字符串的创建

     NSString *s1 = @"jack";

     //NSString *s2= [[NSString alloc] initWithString:@"jack"];

  NSString*s3 = [[NSString alloc] initWithFormat:@"age is %d",10];

   

     // C字符串--> OC字符串

  NSString *s4 = [[NSString alloc]initWithUTF8String:"jack"];

     // OC字符串 --> C字符串

     const char *cs = [s4 UTF8String];

    

     // NSUTF8StringEncoding 用到中文就可以用这种编码

NSString *s5 = [[NSStringalloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt"encoding:NSUTF8StringEncoding error:nil];

 

    // URL : 资源路径

    // 协议头://路径

    // file://

    // ftp://

    // http://weibo.com/a.png

       

// NSURL *url = [[NSURL alloc]initWithString:@"file:///Users/apple/Desktop/1.txt"];

    NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/1.txt"];

    NSString *s6 = [[NSString alloc] initWithContentsOfURL:urlencoding:NSUTF8StringEncoding error:nil];

   

         一般都会有一个类方法跟对象方法配对

    [NSURL URLWithString:<#(NSString *)#>];

    [NSString stringWithFormat:@""];

 [NSStringstringWithContentsOfFile:<#(NSString *)#>encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing*)#>];

 

2.      字符串的导出

  [@"Jack\nJack" writeToFile:@"/Users/apple/Desktop/my.txt" atomically:YESencoding:NSUTF8StringEncoding error:nil];

     NSString *str = @"4234234";

     NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/my2.txt"];

    [str writeToURL:url atomically:YESencoding:NSUTF8StringEncoding error:nil];

 

三、 NSArray、NSMutableArray

OC数组不能存放nil值

OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等

(一)   NSArray(不可变数组)

1.      NSArray的创建

1)  这个array永远是空数组

NSArray*array = [NSArray array];

           

2)     nil是数组元素结束的标记

NSArray *array2 = [NSArray arrayWithObject:@"jack"];

NSArray*array3 = [NSArray arrayWithObjects:@"jack",@"rose",nil];

           

3)     快速创建一个NSArray对象,@[]只能创建不可变数组

NSArray*array3 = @[@"jack",@"rose"];

 

2.      NSArray中元素的个数

NSLog(@"%ld", array3.count);

 

3.      NSArray中元素的访问

NSLog(@"%@", [array3 objectAtIndex:1]);// rosearray3[1];

 

4.      遍历数组

         // id obj代表着数组中的每一个元素

    int i = 0;

    for (id objin array3)

    {

       // 找出obj元素在数组中的位置

        NSUInteger i = [array3indexOfObject:obj];

       

        NSLog(@"%ld - %@", i, obj);

        if (i==1)

        {  //停止遍历

            break;

        }

    }

   

    [array3 enumerateObjectsUsingBlock:

     // 每遍历到一个元素,就会调用一次block

     // 并且当前元素和索引位置当做参数传给block

     ^(id obj, NSUInteger idx,BOOL *stop)

     {

         NSLog(@"%ld - %@", idx, obj);

         if (idx == 1)

         {

             // 停止遍历

             *stop = YES;

         }

     }];

 

(二)   NSMutableArray(可变数组)

1.      NSMutableArray的创建

NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose",@"jim",nil];

 

2.      添加元素

[array addObject:[[Personalloc] init]];

[array addObject:@"jack"];

 

3.      删除元素

[array removeAllObjects];

 

4.      删除指定的对象

    [array removeObject:@"jack"];

    [array removeObjectAtIndex:0];

 

5.      错误写法

    [array addObject:nil];

 

    NSLog(@"%@", array);

    NSLog(@"%ld", array.count);

 


0 0
原创粉丝点击