美文网首页
Lesson 0-2 Objective-C basic

Lesson 0-2 Objective-C basic

作者: 快乐捣蛋鬼 | 来源:发表于2019-08-08 10:45 被阅读0次

    11.self 和 super

    self代表一个指针,super是一个编译器指示符,self 和 super 都指向的都是相同的消息接收者,super通常代表父类,self通常代表自己

    12.OC字符串

    字符串拼接、分割、比较方法

    NSString *string1 = @"www."
    NSString *string2 = @"baidu.com"
    
    //---------------- 拼接 -------------------
    // 拼接方法1
    NSString *string3 = [NSString stringWithFormat:@"%@%@", string1, string2];
    // www.baidu.com
    
    // 拼接方法2
    string3 = [string3 stringByAppendingString: @"(百度网址)";
    // www.baidu.com(百度网址)
    
    // 拼接方法3
    string3 = [string3 stringByAppendingFormat:@"%d年%d月%d日", 1970, 1, 1];
    // www.baidu.com(百度网址)1970年1月1日
    
    //---------------- 分割 -------------------
    // 分割方法1
    NSArray *components = [string3 componentsSeperatedByString:@"."];
    components = [string3 componentsSeperatedByCharactersInSet: [NSCharacterSetcharacterSetWithCharactersInString:@".()"];
    
    // 分割方法2
    NSString *substring = [string3 substringFromIndex:5];
    
    substring = [string3 substringToIndex:5];
    
    substring = [string3 substringWithRange:NSMakeRange(2, 5)];
    
    //---------------- 比较 -------------------
    NSString *string1 = @"hello";
    NSString *string2 = @"hello";
    
    if (string1 isEqualToString:string2) {
        // 正确:比较字符串内容
    }
    if (string1 == string2) {
        // 错误:比较字符串指针
    }
    
    string1 = @"abc";
    string2 = @"abcd";
    
    NSComparisionResult result = [string1 compare:string2];
    switch (result) {
        case NSOrderedAscending:
            NSLog(@"string1 < string2");
            break;
        case NSOrderedSame:
            NSLog(@"string1 == string2");
            break;
        case NSOrderedDescending:
            NSLog(@"string1 > string2");
            break;
        default:
            break;
    }
    
    if ([string1 compare:string2] == NSOrderedSame) {
        NSLog(@"相同");
    } else 
    {
        NSLog(@"不同");
    }
    
    

    13.OC数组-有序集合

    不可变:数组元素个数不可变,元素类型不可变,对象地址;

    // --------------- 新建不可变数组 -------------------
    // 法1: nil是元素添加结束的标志
    NSArray *array = [[NSArray alloc] initWithObjects:@"one", @"two", @"three", nil];
    
    // 法2:使用此法创建的数组会由系统自动用上面的方法创建,不需要在末尾添加nil
    array = @[@"1", @"2", @"3", @"4"]; 
    
    // 法3: 通过NSArray 类方法来创建
    array = [NSArray arrayWithObjects: @"one", array, nil]
    
    
    // ------------------- 取出数组中的元素----------------------
    NSArray *subarray = [array objectAtIndex:0];
    id object = array[1];
    
    
    // ------------------- 遍历数组中的元素 -----------------------
    // for...in 索引,关心元素的index
    for (NSInterger i = 0; i < array.count; i++) {
        NSLog(@"%@", array[i]);
    }
    
    // for...in 元素,只关心元素
    for (NSString *object in array) {
        NSLog(@"%@", obejct)
    }
    // 如果不确定元素的类型,可以用id先代替类型(NSString -> id)
    
    // 遍历数组中的元素 (枚举)
    NSEnumerator *enumerator = [array objectEnumerator];
    id object = [enumerator nextObject];
    while (object) {
         object = [enumerator nextObject];
    }
    
    
    // ------------  排序 ---------------
    // 法1:
    NSArray *array = @[@"5", @"3", @"4" , @"1", @"2"];
    NSArray *resultArray = [array sortedArrayUsingSelector: @selector(compare:)];
    
    // 法2:
    NSSortDescriptor *desc1 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:NO];
    sortDescriptorWithKey:@"key" ascending:NO];
    resultArray = [array sortedArrayUsingDescription:@[desc1, desc2]];
    
    
    

    14.OC字典-无序集合

    // ----------------  创建不可变字典 -----------------
    // 法1
    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: @"one", @"1", @"two", @"2", nil ];
    
    // 法2
    dict = @{@"name": @"Tom",
                  @"nickname":@"Tom", 
                  @"age": @12,
                  @"sex": @"male"};
    
    // 通过 key 查找 value
    NSString *name = [dict objectForKey:@"name"];
    NSNumber *name = dict[@"name"];
    // 编译器在编译的时候会用自动转成第一个方法
    
    // 通过 value 查找 key, 不可能有相同的key, 但是可能有多个key, 所以找到的key是一个数组
    NSArray *keyArray = [dict allKeysForObject:@"Tom"];
    
    // ----------------- 遍历字典 ---------------------
    for (type *object in collection) {
        statements
    }
    // 遍历key
    for (NSString *key in dict) {
        NSLog(@"%@: %@", key, dic[key]);
    }
    
    // 遍历value
    for (id object in dict.allValues) {
    }
    
    // ------------ 可变字典的操作 --------------
    // 可变字典要将不可变字典先传给可变字典
    NSDictionary *dict = @{@"name": @"Tom",
                  @"nickname":@"Tom", 
                  @"age": @12,
                  @"sex": @"male"};
    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary]; // 声明一个可变字典
    [mutableDict addEntriesFromDictionary: dict]; // 将不可变字典传给可变字典
    
    // 增加一个键值对
    [mutableDict setObject:@170 forKey:@"height"]; 
    // 修改一个key对应的value
    [mutableDict setObject:@30 forKey:@"age"]; 
    // 删除一个键值对
    [mutableDict removeObjectForKey:@"height"];
    
    
    

    相关文章

      网友评论

          本文标题:Lesson 0-2 Objective-C basic

          本文链接:https://www.haomeiwen.com/subject/mdjtjctx.html