A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chenhuan_ccit 中级黑马   /  2014-11-7 19:09  /  1689 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Foundation框架是iOS开发的基础框架,它包括字符串、集合、日期、时间等基础类。
1    NSSet和NSMutableSet
NSSet和NSArray一样,也是一个集合,但是集合里的多个对象没有明显的顺序。NSSet不允许包含相同的元素,如果试图把两个相同的元素放在同一个NSSet集合中,则会只保留一个元素。NSMutableArray代表集合元素可变的NSSet集合,在NSSet的基础上增加了添加、删除的方法。
// set的基本使用
void test()
{
    //"jack"只添加了一个
    NSSet *s = [NSSet setWithObjects:@"jack",@"rose", @"jack",@"jack3",nil];
    NSLog(@"%@", s);   
   
    NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil];
   
    // 随机拿出一个元素
    NSString *str =  [s2 anyObject];
   
    NSLog(@"%@", str);
   
    NSLog(@"%ld", s2.count);
}

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


2    NSDictionary和NSMutableDictionary
NSDictionary用于保存具有映射关系的数据,因此,NSDictionary集合里保存着两组值,一组值用于保存key,一组值用于保存value。key和value可以是任何引用类型的数据,key不允许重复。NSMutableDictionary继承了NSDictionary,它代表一个key-value可变的NSDictionary集合。
void use()
{
    /*创建NSDictionary的几种方法
   
     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
    NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};
   
   
    // id obj = [dict objectForKey:@"name"];  通过key,找到value
    id obj = dict[@"name"];  //快速访问
    NSLog(@"%@", obj);
   
   
   
    // 返回的是键值对的个数
    NSLog(@"%ld", dict.count);
}

void use2()
{
    //只能快速创建NSDictionary,不能快速创建NSMutableDictionary ,会警告。如果运行时,修改Dictionary会出错
   // NSMutableDictionary *dict = @{@"name" : @"jack"};
   
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
   
    // 添加键值对,不能添加相同的key,只会添加一个“name”
    [dict setObject:@"jack" forKey:@"name"];      
    [dict setObject:@"北京" forKey:@"address"];   
    [dict setObject:@"rose" forKey:@"name"];
   
     NSLog(@"%@",dict);
   
    // 移除键值对
    // [dict removeObjectForKey:<#(id)#>];
        
    NSString *str = dict[@"name"];
      
    NSLog(@"%@", str);

    // 字典不允许有相同的key,但允许有相同的value(Object)
    // 字典的无序的
    NSDictionary *dict = @{
    @"address" : @"北京",
    @"name" : @"jack",
    @"name2" : @"jack",
    @"name3" : @"jack",
    @"qq" : @"7657567765"};

    //遍历NSDictionary
   
    //    NSArray *keys = [dict allKeys];
    //
    //    for (int i = 0; i<dict.count; i++)
    //    {
    //        NSString *key = keys[i];
    //        NSString *object = dict[key];
    //
    //
    //        NSLog(@"%@ = %@", key, object);
    //    }
   
    //系统自带的遍历NSDictionary方法      
    [dict enumerateKeysAndObjectsUsingBlock:
     ^(id key, id obj, BOOL *stop) {
         NSLog(@"%@ - %@", key, obj);
         
         // *stop = YES;
     }];

}



3    NSNumber和NSValue
NSNumber和NSValue都是包装类,NSValue是NSNumber的父类。NSValue代表更通用的包装类,用于包装short、int、long、float、char、指针、结构体、对象id等。NSNumber是更具体的包装类,主要用于包装C语言的各种数值类型 ,这样基本的数值类型就能添加到集合中了。NSNumber提供了实例方法和类方法用于包装基本数值类型,以及简化写法。
+ numberWithXxx: 类方法
- initWithXxx: 实例方法
@1;@12.3; 简化写法
void test()
{
    NSNumber *num = [NSNumber numberWithInt:10];
   
    NSDictionary *dict =  @{
    @"name" : @"jack",
   
   
    @"age" : num
   
    };
   
    NSNumber *num2 = dict[@"age"];
   
   
    int a = [num2 intValue];
   
    NSLog(@"%d" , a);
}

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];
    //d = [n intValue];
   
    NSLog(@"d=%d",d);
   
   
    int a = 20;
   
    // @"20"
    NSString *str = [NSString stringWithFormat:@"%d", a];
    NSLog(@"%d", [str intValue]);

    // 结构体--->OC对象
   
    CGPoint p = CGPointMake(10, 10);
    // 将结构体转为Value对象
    NSValue *value = [NSValue valueWithPoint:p];
   
    // 将value转为对应的结构体
    // [value pointValue];
   
    NSArray *array = @[value ];
   
   
    return 0;
}


4    NSDate和NSDateFormatter
NSDate对象代表日期与时间,通过类方法或者实例方法创建NSDate对象。NSDateFormatter代表一个日期格式器,它的功能就是完成NSDate与NSString之间的转换。NSDate与NSString之间转换的步骤如下:
1、创建NSDateFormatter对象
2、设置NSDateFormatter对象的dateFormat属性
3、如果需要將NSdate转化为NSString,调用NSDateFormatter对象的stringFromDate方法;將NSString转换为NSDate,调用dateFromString
void use()
{
    // 创建一个时间对象
    NSDate *date = [NSDate date];  
    // 打印出的时候是0时区的时间(北京-东8区)
    NSLog(@"%@", date);  //
   
    NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];
   
   
    // 从1970开始走过的秒数
    NSTimeInterval seconds = [date2 timeIntervalSince1970];
   
    // [date2 timeIntervalSinceNow];
}

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

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

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马