黑马程序员——Foundation框架结构体、字符串、数组

本文介绍了Objective-C中的结构体操作、字符串处理、数组使用等基础知识,包括CGPoint、CGSize、CGRect等结构体的比较方法,字符串拼接及范围查找,以及数组的创建与遍历。

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

结构体

 

//  
//  main.m  
//  01-结构体  
//  
//  Created by CH on 14-4-11.  
//  Copyright (c) 2014年 itcast. All rights reserved.  
//  
  
#import   
  
  
int main(int argc, const charchar * argv[])  
{  
    BOOL b = CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10));//判断两个点是否相同  
    //依此类推,CGRect CGSize都又类似的方法  
    //CGSizeEqualToSize(CGSize size1, CGSize size2);  
    //CGRectEqualToRect(CGRect rect1, CGRect rect2);  
      
    BOOL b2 = CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(230, 70));//reck中是否包含piont  
      
    NSLog(@"%d",b2);  
    return 0;  
}  
CGRect myRect1(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;  
}  
CGRect myRect2(CGPoint p,CGSize s){  
    CGRect rect;  
    rect.origin.x = p.x;  
    rect.origin.y = p.y;  
    rect.size.width = s.width;  
    rect.size.height = s.height;  
    return rect;  
}  
void rect(){  
    //NSPoint==CGPoint==CGFloat==double  
      
      
    CGPoint p1 = NSMakePoint(10, 10);  
    NSPoint p2 = CGPointMake(10, 10);//开发中最常用  
      
    NSSize s1 = CGSizeMake(100, 50);  
    NSSize s2 = NSMakeSize(100, 50);  
    CGSize s3 = NSMakeSize(100, 30);  
      
    CGRect r1 = CGRectMake(0, 0, 100, 40);  
    CGRect r2 = {{0,0},{100,90}};  
    CGRect r3 = {p1,s2};  
    //CGPointZero == CGPointMake(0, 0);//表示原点  
    //CGSizeZero;  
    //CGRectZero;  
    CGRect r4 = {CGPointZero,CGSizeMake(100, 60)};  
      
      
    //将结构体转成字符串  
    NSString *str1 = NSStringFromPoint(p1);  
    NSString *str2 = NSStringFromSize(s3);  
    NSString *str3 = NSStringFromRect(r1);  
      
    NSLog(@"\n%@\n,%@\n,%@",str1,str2,str3);  
  
  
}  
void range(){  
      
    struct Date {  
        int year;  
        int month;  
        int day;  
    };  
    struct Date d = {2011,3,12};  
    struct Date d2 = {.month = 10, .year = 2013, .day = 23};  
      
    // @"i love oc" love 的范围  
    NSRange r1 = {2,4};//不用  
    NSRange r2 = {.location = 2, .length = 4};//不用  
    NSRange r3 = NSMakeRange(2, 4);//掌握  
      
    NSString *str = @"i love oc";  
    //如果找不到,length=0,location=NSNotFound==-1  
    NSRange range = [str rangeOfString:@"love"];//查找某个字符串在str中的范围  
      
    NSLog(@"location = %ld,length = %ld",range.location,range.length);  
  
}

字符串

//
// main.m
// 02-NSString
//
// Created by CH on 14-4-11.
// Copyright (c) 2014年 itcast. All rights reserved.
//
#import
int main()
{
//可变字符串
NSMutableString *s1 = [NSMutableString stringWithFormat:@"age is 20"];
//拼接内容到s1到后面
[s1 appendString:@"11,22"];//s1的值会变
//获取is的范围
NSRange range = [s1 rangeOfString:@"is"];
[s1 deleteCharactersInRange:range];
//[s1 deleteCharactersInRange:NSMakeRange(4,2)];一般不用
//不可变字符串
NSString *s2 = [NSMutableString stringWithFormat:@"age is 200"];
NSString *s3 = [s2 stringByAppendingString:@"123"];//拼接完返回新的字符串,s2本身不会改变
NSLog(@"\ns1 = %@,\ns2 = %@,\ns3 = %@",s1,s2,s3);
return 0;
}
void stringExport(){
//字符串的导出
[@"jack \njack" writeToFile:@"/Users/ch/Desktop/my.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSString *str = @"1231";
NSURL *url = [NSURL fileURLWithPath:@"/Users/ch/Desktop/my2.txt"];
[str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];
}
void nSStringAll(){
//字符串的一些用法和NSURL
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 charchar *cs = [s4 UTF8String];//const 可以不写
//NSUTF8StringEncoding 用到中文就可以用这种编码
NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/ch/Downloads/test2.txt" encoding:NSUTF8StringEncoding error:nil];
//URL:资源路径
//协议头://路径
//本地文件: file://
//网络ftp服务器:ftp://
//http://weibo.com/a.png
NSURL *url = [[NSURL alloc] initWithString:@"http://www.feilv.com"];
NSURL *url1 = [NSURL fileURLWithPath:@"/Users/ch/Downloads/test2.txt"];
NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSLog(@"s6:\n%@",s6);
}


不可变数组

//  
//  main.m  
//  03-NSArray  
//  
//  Created by CH on 14-4-11.  
//  Copyright (c) 2014年 itcast. All rights reserved.  
//  
  
#import   
  
int main()  
{  
    Person *p = [[Person alloc] init];  
    NSArray *array = @[p,@"jack"];  
    //遍历方式一  
    for(int i = 0; i.count;i++){  
        NSLog(@"%@",array[i]);  
    }  
    //遍历方式二  
    for(id obj in array){  
//      NSUInteger i =[array indexOfObject:obj];//当前第几次  
        NSLOg(@"%@",obj);  
    }  
    //遍历方式三  
    [array enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOLBOOL *stop){  
        //idx表示索引位置,obj表示对象,stop是用来停止遍历的  
        NSLog(@"%ld - %@",idx,obj);  
        if(idx==1){  
            *stop = YES;//停止了idx为1之后的对象  
        }  
    }];  
    //遍历方法三原理:  
      
    return 0;  
}  
void baseuse(){  
    //oc数组只能存放oc对象,不能存放非oc对象类型,比如int,struct,enum等  
      
      
    NSArray *array = [NSArray array];//这个array永远是空数组  
    //这是创建单个id的方式  
    NSArray *array2 = [NSArray arrayWithObject:@"jack"];  
    //这是创建多个id的创建方式  nil是数组元素结束的标记  
    NSArray *array3 = [NSArray arrayWithObjects:@"jack",@"rose", nil nil];  
    //创建多个值的数组  
    NSArray *array4 = [NSArray arrayWithObjects:@"jack",@"rose",@"Mike",@"Chenghao",nil];  
    //快速创建一个NSArray对象  
    NSArray *array5 = @[@"jack",@"rose",@"chegnhao"];  
      
      
    //[array2 count];和以下方式都可以  
    NSLog(@"%ld",array3.count);  
    NSLog(@"%@",[array3 objectAtIndex:1]);//这种不用  
    NSLog(@"%@",array3[1]);//以后都适用这种,编译器遇到这行,就自动转成上面的代码  
  
}  


 

可变数组

#import   
  
  
int main(){  
      
    return 0;  
}  
void NSSet(){  
    NSSet *s = [NSSet set];//创建一个空的set,并且永远是空  
    NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose",nil];  
    [s2 anyObject];//随机拿出一个元素  
}  
void NSMutableSet(){  
    NSMutableSet *s = [NSMutableSet set];  
    [s addObject:@"hack"];//添加元素  
    [s removeObject:(id)];//删除元素  
}  
void NSMutableArray(){  
    //@[] 只创建不可变数组 NSArray  
    NSArray *array = @[@"jack",@"rose"];  
    NSMutableArray *array2 = [NSMutableArray arrayWithObjects:@"rose",@"jim",nil];//初始化时添加成员  
  
    NSMutableArray *array = [NSMutableArray array];  
    //添加元素  
    [array addObject:[[Person alloc] init];  
    [array addObject:@"Jack"];可以随便放,但不能放基本数据类型  
    //[array addObject:10];不行  
    //删除元素  
    //[array removeAllObjects];//删除所有元素  
    //删除指定对象  
    [array removeObject:@"Jack"];  
    [array removeObjectAtIndex:2];  
          
    return 0;  
}  


 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值