黑马程序员——Objevtive-C——Foundation框架2

来源:互联网 发布:宝玛中走丝是什么软件 编辑:程序博客网 时间:2024/05/27 02:32
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

集合类NSDictionary

一、具备字典的功能,根据一个标识找到对应的东西。NSDictionary里存储的东西都是键值对,key称之为键,value称之为值。

#import <Foundation/Foundation.h>int main(){NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" fokey: @"name"];NSDictionary *keys = @[@"name",@"address"];NSDictionary *objects = @[@"jack",@"北京"];NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"jack",@"name",...........NSDictionary *dict = @{@"name":@"jack",@"address":@"北京"};//可读性好,推荐,但//大括号创建的是不可变的。id obj = [dict objectForKey:@"name"];//较繁琐id obj = dict[@"name"];//简洁,推荐dict.count//返回的是键值对的个数dict.setObject:@"jack" forkey:@"name";//添加键值对dict.setObject:@"rose" forkey:@"name";//如果多次给//一个key赋值,会覆盖之前的值。[dict removeObjectForkey:]//删除键值对//遍历//字典不允许有相同的key,但允许有相同的值。NSDictionary *dict = @{@"name":@"jack",@"qq":@"926459723"};NSArry *keys = [dict allkeys];for (int i = 0;i<dict.count;i++)//方法一{NSString *key = keys[i];NSString *object = dict[key];NSLog(@"%@ = %@",key,object);}//方法2,字典无顺序,所以推荐block[dict enumerateKeysAndObjectsUsingBlock:     ^(id key, id obj, BOOL *stop) {         NSLog(@"%@ - %@", key, obj);                  // *stop = YES;只遍历一次,打印一次就停止     }];//通讯录NSArry *persons = @[@{@"name":@"jack",@"qq":@"134421514"@{...@{...];NSLog(@"%@",jim);return 0;} 


 

 

NSNumber、NSValue类

一、NSNumber就是数字对象,我们可以使用NSNumber对象来创建和初始化不同类型的数字对象。因为很多类(如NSArray)都要求使用对象,而基本数据类型不是对象。

#import <Foundation/Foundation.h>int main(){    // @20  将 20包装成一个NSNumber对像            NSArray *array = @[        @{@"name" : @"jack", @"age" : @20},        @{@"name" : @"rose", @"age" : @25},        @{@"name" : @"jim", @"age" : @27}    ];            // 将各种基本数据类型包装成NSNumber对象    @10.5;    @YES;    @'A'; // NSNumber对象        @"A"; // NSString对象                // 将age变量包装成NSNumber对象    int age = 100;    @(age);    //[NSNumber numberWithInt:age];            NSNumber *n = [NSNumber numberWithDouble:10.5];            int d = [n doubleValue];                int a = 20;        // @"20"    NSString *str = [NSString stringWithFormat:@"%d", a];    NSLog(@"%d", [str intValue]);        return 0;}void test(){    NSNumber *num = [NSNumber numberWithInt:10];        NSDictionary *dict =  @{    @"name" : @"jack",            @"age" : num        };        NSNumber *num2 = dict[@"age"];        int a = [num2 intValue];        NSLog(@"%d" , a);}


二、NSValue,NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue.

       而NSValue还可以包装结构体。

int main(){        // 结构体--->OC对象        CGPoint p = CGPointMake(10, 10);    // 将结构体转为Value对象    NSValue *value = [NSValue valueWithPoint:p];        // 将value转为对应的结构体    // [value pointValue];        NSArray *array = @[value ];                // insert code here...    // NSLog(@"这是哥修改过的东西6");    return 0;}

 

NSDate

一、NSDate是NSString类的格式,也可以改变输出,如果需要输出年代信息等则需要进行转换,等等。NSDate存储的是世界标准时(UTC),输出时需要根据时区转换为本地时间。NSDateFormatter可以比较方便地进行格式转换。

#import <Foundation/Foundation.h>int main(){    // 09/10/2011    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);    return 0;}void date2string(){    NSDate *date = [NSDate date];            // 日期格式化类    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];        // y 年  M 月  d 日    // m 分 s 秒  H (24)时  h(12)时    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";        NSString *str = [formatter stringFromDate:date];        NSLog(@"%@", str);}void use(){    // 创建一个时间对象    NSDate *date = [NSDate date];    // 打印出的时候是0时区的时间(北京-东8区)    NSLog(@"%@", date);        NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];            // 从1970开始走过的秒数    NSTimeInterval seconds = [date2 timeIntervalSince1970];        // [date2 timeIntervalSinceNow];


0 0
原创粉丝点击