黑馬程序員_OC語言的Foundation 下

iOS,Android,Java培訓,期待與您的交流
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;
}

iOS,Android,Java培訓,期待與您的交流
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章