您的位置:首页 > 编程语言 > C语言/C++

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

2014-08-30 16:49 597 查看
若排版有错误,请查看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=0,location=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框架

 

     // 比较两个点是否相同(x、y)
  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"];
     /
4000
/ 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);
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐