黑马程序员—对Foundation内常用类和方法的探索

对Foundation内常用类和方法的研究

.常用的结构体方法:

1.NSRange(location 位置 length长度 两个参数)

NSString *str = @"i love oc";

*如何表示 该字符串中love的范围? 有三种方法。

NSRange r1 = {2, 4};

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

NSRange r3 = NSMakeRange(2, 4); (常用)

*更加有效率的查找到指定字符串

// 先获取字符串的范围用NSrange类型存放

NSRange range = [str rangeOfString:@"java"];

// .location方法 得到位置 .length方法得到长度

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



2.NSPoint(也可以写做CGPoint

//CG开头的都是在CoreGraphic框架里定义的但是在Foundation框架里有声明

内部参数有  doubledouble Y

赋值方式:

CGPoint p1 = NSMakePoint(10, 10);

NSPoint p2 = CGPointMake(20, 20);

CGPointZero == CGPointMake(0, 0);


2.NSSize(也可以写做CGSize

//主要用来表明尺寸

内部参数有   double weight double weight

赋值方式:

NSSize s1 = CGSizeMake(100, 50);

CGSize s3 = NSMakeSize(200, 60);


3.NSRect(也可以写做CGRect,内部参数由CGPintCGSize组成)

//由前两个参数组成 内部有X,Y,weightheight 四个参数

赋值方式:

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

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

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

内部数据的单独赋值(第一个点是get方法第二个点是set方法):

rect.origin.x = x;

//    rect.origin.y = y;

//    rect.size.width = width;

//    rect.size.height = height;


4.常用方法

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

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

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

*将结构体转化为字符串

NSString *str = NSStringFromPoint(p1);

NSString *str = NSStringFromSize(s3);

NSString *str = NSStringFromRect(r1);

NSLog(@"%@", str);


.NSString的用法

种类:

NSString : 不可变字符串

NSMutableString : 可变字符串  可进行添加部分删除部分等方法

常用用法:

// *字符串的创建

NSString *s1 = @"jack";

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

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

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


// *拼接内容到s1的后面

NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"];

[s1 appendString:@" 11 12"];


// *获取某字符串的范围然后修改

NSRange range = [s1 rangeOfString:@"is"];

[s1 deleteCharactersInRange:range];


// *字符串的导出

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


.NSArray

//C语言字符串相比特点  可以把不同数据类型的对象存入数组

种类:

NSArray :不可变数组

NSMutableArray : 可变数组

常用用法:

// *1.NSArray的创建

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

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

NSArray *array4 = @[@"jack", @"rose", @"4324324"];(快速创建)


// *2.输出NSArray的元素个数

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


// *3.NSArray中元素的访问

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


// *4.数组的遍历

Person *p = [[Person alloc] init];


NSArray *array = @[p, @"rose", @"jack"];


    for (int i = 0; i<array.count; i++)

    {

        NSLog(@"%@", array[i]);

    }

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

 int i = 0;

    for (id obj in array)

    {

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

        NSUInteger i = [array indexOfObject:obj];


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

        //i++;


        if (i==1)

        {

          break;

        }

    }

// *5.为可变数组添加与删除元素

array addObject:[[Person alloc] init]];

[array addObject:@"jack"];


[array removeObject:@"jack"];

[array removeObjectAtIndex:0];


.NSSet 无序数组

1> NSArry共同点

* 都是集合,都能存放多个OC对象

* 只能存放OC对象,不能存放非OC对象类型(基本数据类型:intcharfloat等,结构体,枚举)

* 本身都不可变,都有一个可变的子类


2> 不同点

* NSArray有顺序,NSSet没有顺序


种类:

NSSet :不可变数组

NSMutableSet : 可变数组

常用用法:

// *建立

NSSet *s = [NSSet set];

NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2"

             

// *随机拿出一个元素

NSString *str =  [s2 anyObject];

NSLog(@"%@", str);


// *添加与删除元素

NSMutableSet *s = [NSMutableSet set];

[s addObject:@"hack"];

[s removeObject:<#(id)#>];


.NSDictionary

字典不允许有相同的key,但允许有相同的valueObject

字典的无序的

快速创建(不可变):@{key1 : value1,  key2 : value2}

快速访问元素:字典名[key]

种类:

NSDictionary:不可变字典

NSMutableDictionary 可变字典


常用用法:

// *建立

NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];

 NSArray *keys = @[@"name", @"address"];

 NSArray *objects = @[@"jack", @"北京"];


// *快速赋值

NSArray *persons = @[

                     @{@"name" : @"jack", @"qq" : @"432423423", @"books": @[@"5分钟突破iOS编程", @"5分钟突破android编程"]},

                     @{@"name" : @"rose", @"qq" : @"767567"},

                     @{@"name" : @"jim", @"qq" : @"423423"},

                     @{@"name" : @"jake", @"qq" : @"123123213"}


                     ];

// 直接取出5分钟突破iOS编程

NSString *bookName = persons[0][@"books"][1];

NSLog(@"%@", bookName);


// *给可变字典添加与删除键值对

[dict setObject:@"jack" forKey:@"name"];

[dict setObject:@"北京" forKey:@"address"];

[dict setObject:@"rose" forKey:@"name"];


[dict removeObjectForKey:<#(id)#>];


.NSNumber

用法:将各种基本数据类型包装成NSNumber对象

// *普通转化方法

NSNumber *num = [NSNumber numberWithInt:10];


NSDictionary *dict =  @{

                        @"name" : @"jack",

                        @"age" : num

                        };


NSNumber *num2 = dict[@"age"];


int a = [num2 intValue];


NSLog(@"%d" , a);


// *快速转化方法

@25

@10.5;

@YES;

@'A'; // NSNumber对象


@"A"; // NSString对象

// *age变量包装成NSNumber对象

int age = 100;

@(age);


.NSDate

打印出的时候是0时区的时间(北京-8区)


// *创建一个时间对象

NSDate *date = [NSDate date];

NSLog(@"%@", date);

NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];


// *把系统时间转化成自己设置日期格式

 NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";


NSString *str = [formatter stringFromDate:date];


NSLog(@"%@", str);


// *把自己输入的日期转换成系统格式。

NSString *time = @"2011/09/10 18:56";


NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

formatter.dateFormat = @"yyyy/MM/dd HH:mm";


NSDate *date = [formatter dateFromString:time];

NSLog(@"%@", date);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值