【黑马程序员】-Foundation框架-集合及其它

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

一、NSDictionary/NSMutableDictionary

1、NSDictionary不可变字典

基本创建类型及其获取:

    //创建一个字典对象,不可变
    NSDictionary *dic = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
    id obj = [dic objectForKey:@"name"];  //查找对象
    
    //快速创建字典方式,注意字典中的对象也是无序的
    NSDictionary *dic1 = @{@"name":@"jack", @"address":@"北京"};
    id obj1 = dic[@"name"]; //快速提取对象
    
    NSArray *key1 = @[@"name", @"address"];
    NSArray *value1 = @[@"jack", @"北京"];
    NSDictionary *dic3 = [NSDictionary dictionaryWithObjects:value1 forKeys:key1];
       字典中的数据都是以键值对存储的,因此里边的数据都是成对存在的。在字典中不允许有相同的key,但是可以有相同的value。

2、NSMutableDictionary

基本创建类型:

    NSMutableDictionary *dic2 = [NSMutableDictionary dictionary];
    [dic2 setObject:@"jack" forKey:@"name"]; //添加字典内容
    [dic2 setObject:@"rose" forKey:@"name"]; //会覆盖掉之前的jack
    
    NSLog(@"%@", dic2[@"name"]);  //输出是rose
    [dic2 removeObjectForKey:@"name"]; //删除字典元素
3、字典遍历

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    NSArray *key1 = @[@"name", @"address", @"qq"];
    NSArray *value1 = @[@"jack", @"北京", @"234928340"];
    NSDictionary *dic3 = [NSDictionary dictionaryWithObjects:value1 forKeys:key1];
    
    //遍历方法1
    NSArray *keys = [dic3 allKeys]; //获取字典的所有关键字的方法
    for (int i = 0; i <dic3.count; i++) {
        NSString *key = keys[i];
        NSString *value = dic3[key];
        
        NSLog(@"%@ - %@", key, value);
    }
    
    //遍历方法2
    [dic3 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        NSLog(@"%@ - %@", key, obj);
    }];
    
    return 0;
}
二、集合总结

(1)NSArray/NSMutableArray

        *有序;

        *快速创建方式:@[ ];(不可变)

        *快速访问方式:数组名[ ]

(2)NSSet/NSMutableSet

        *无序

(3)NSDictionary/NSMutableDictonary

        *无序

        *快速创建方式为:@{  };(不可变字典)

        *快速访问方式:字典名[key]

(4)数组中可以包含字典

例如创建一个数组:

 NSArray  *person = @[@{@"name":@"jack"}, {@"address":@"北京"}, {@"qq":@"239847982"}];

 NSString *p1Name = person[1][@"address"];  //提取数组中字典的元素

三、NSNumber:存放基本数据类型(只能包装数字)。

由于在数组中存储的数据都是oc对象,所以当要想将基本数据类型存到数组中时应该怎么办?NSNumber可以对数字类型进行封装,然后装到数组中。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    NSNumber *num = [NSNumber numberWithInt:20];
    NSNumber *num1 = [NSNumber numberWithChar:'a'];
    
    //定义一个数组,要求传入年龄
    NSArray *array = @[num, num1]; //传入两个NSNumber
    
    NSLog(@"%@", array);
    
    NSDictionary *dic = @{@"name":@"jack", @"age":num};
    NSDictionary *dic2 = @{@"name":@"jack", @"age":@20}; //快速创建出NSNumber类型
    
    //快速取出字典中的数字
    NSNumber *num2 = dic[@"age"];
    int a = [num2 intValue]; //将数据转换成int型
    
    NSLog(@"%d", a);
    
    return 0;
}
注意:@'a':表示NSNumber对象,@"a":表示NSString对象

四、NSDate存放时间

基本定义形式

    //NSDate创建
    NSDate *date = [NSDate date]; //时间是调用这条指令时的时间,而且是格林时间。
    
    //5表示的时5秒
    NSDate *date1 = [NSDate dateWithTimeInterval:5 sinceDate:date];
    
    int a = [date1 timeIntervalSince1970]; //计算从1970年到date1一共有多少秒
日期格式化:

    //创建一个时间格式对象
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    //规定时间的输出格式
    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    //将时间转换成字符串
    NSString *str = [formatter stringFromDate:date1];
    //输出时间字符串
    NSLog(@"%@", str);
五、NSValue

      其实NSNubmber继承NSValue,相对于NSNumber,NSValue拥有包装的范围更广,包括结构体、指针等。

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值