黑马程序员——Foundation---NSSet,NSDictionary,NSNumber,NSDate,NSValue

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


NSSet


NSSetNSArray的对比

 1> 共同点

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

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

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

 

 2> 不同点

 * NSArray有顺序,NSSet没有顺序


示例:

#import <Foundation/Foundation.h>

int main()
{
    NSMutableSet *s = [NSMutableSet set];
    
    // 添加元素
    [s addObject:@"hack"];
    
    // 删除元素
    // [s removeObject:<#(id)#>];
    return 0;
}

// set的基本使用
void test()
{
    NSSet *s = [NSSet set];
    
    NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil];
    
    // 随机拿出一个元素
    NSString *str =  [s2 anyObject];
    
    NSLog(@"%@", str);
    
    //NSLog(@"%ld", s2.count);
}






NSDictionary



 集合

 1.NSArray\NSMutableArray

 * 有序

 * 快速创建(不可变):@[obj1, obj2, obj3]

 * 快速访问元素:数组名[i]

 

 2.NSSet\NSMutableSet

 * 无序

 

 3.NSDictionary\NSMutableDictionary

 * 无序

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

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

 


示例:

#import <Foundation/Foundation.h>

int main()
{
    NSArray *persons = @[
    @{@"name" : @"jack", @"qq" : @"432423423", @"books": @[@"5分钟突破iOS编程", @"5分钟突破android编程"]},
    @{@"name" : @"rose", @"qq" : @"767567"},
    @{@"name" : @"jim", @"qq" : @"423423"},
    @{@"name" : @"jake", @"qq" : @"123123213"}
    ];
    
    // 
    // NSDictionary *jim = persons[2];
    
    
    // 
    NSString *bookName = persons[0][@"books"][1];
    NSLog(@"%@", bookName);
    //NSArray *array = persons[0][@"books"];
    
    //NSLog(@"%@", array);
    
    // 先取出1位置对应的字典
    // 再取出字典中qq这个key对应的数据
    //NSLog(@"%@", persons[1][@"qq"]);
    
    // NSLog(@"%@", jim);
    return 0;
}

void use4()
{
    // 字典不允许有相同的key,但允许有相同的value(Object)
    // 字典的无序的
    NSDictionary *dict = @{
    @"address" : @"北京",
    @"name" : @"jack",
    @"name2" : @"jack",
    @"name3" : @"jack",
    @"qq" : @"7657567765"};
    
    //    NSArray *keys = [dict allKeys];
    //
    //    for (int i = 0; i<dict.count; i++)
    //    {
    //        NSString *key = keys[i];
    //        NSString *object = dict[key];
    //
    //
    //        NSLog(@"%@ = %@", key, object);
    //    }
    
    
    [dict enumerateKeysAndObjectsUsingBlock:
     ^(id key, id obj, BOOL *stop) {
         NSLog(@"%@ - %@", key, obj);
         
         // *stop = YES;
     }];
}

void use3()
{
    NSMutableDictionary *dict = @{@"name" : @"jack"};
    
    
    [dict setObject:@"rose" forKey:@"name"];
}

void use2()
{
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    
    // 添加键值对
    [dict setObject:@"jack" forKey:@"name"];
    
    
    [dict setObject:@"北京" forKey:@"address"];
    
    [dict setObject:@"rose" forKey:@"name"];
    
    
    // 移除键值对
    // [dict removeObjectForKey:<#(id)#>];
    
    
    NSString *str = dict[@"name"];
    
    
    //NSLog(@"%@", str);
    
    NSLog(@"%@", dict);
    
    
    //NSLog(@"%@", @[@"jack", @"rose"]);
}

void use()
{
    /*
     字典:
     
     key ----> value
     索引 ----> 文字内容
     
     里面存储的东西都是键值对
     
     
     */
    
    // NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
    
    
    // NSArray *keys = @[@"name", @"address"];
    // NSArray *objects = @[@"jack", @"北京"];
    
    // NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
    
    
    /*
     NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
     @"jack", @"name",
     @"北京", @"address",
     @"32423434", @"qq", nil];*/
    
    
    NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};
    
    // id obj = [dict objectForKey:@"name"];
    
    id obj = dict[@"name"];
    
    NSLog(@"%@", obj);
    
    
    
    // 返回的是键值对的个数
    NSLog(@"%ld", dict.count);
}




NSNumber



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

    @10.5;

    @YES;

    @'A'; // NSNumber对象

    

    @"A"; // NSString对象

 age变量包装成NSNumber对象

    int age = 100;

    @(age);

    


示例:

#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);
}


运行结果:






NSDate


示例:


#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];
}

运行结果:



NSValue


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


示例:

#import <Foundation/Foundation.h>

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;
}








1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值