OC 变量类型 数组 字典 等容器

本文介绍 Objective-C 中 NSNumber、NSString 和 NSArray 的使用方法,包括初始化、转换及操作等,帮助初学者理解如何封装基本数据类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// NSNumber 对象   由于数组不能存储基本数据类型,所以就用到NSNumber对象

void NSnumberTest(){

    //1.NSNumber初始化

    //类方法:自动放入autoreleasepool

    NSNumber * num1=[NSNumber numberWithInt:100];

    NSLog(@"num1=%@",num1);

    //实例方法

    NSNumber * num2=[[NSNumber alloc]init];

    NSLog(@"num2=%@",num2);

    [num2 release];

    //2.NSNumber->基本数据类型

    int value1=[num1 intValue];

    double value2=[num1 doubleValue];

    NSLog(@"value1=%d",value1);

    NSLog(@"value2=%f",value2);

    //3.isEqualToNumber: 用来比较两个对象是否相等

    NSNumber * num3=[NSNumber numberWithInt:100];

    NSNumber * num4=[NSNumber numberWithDouble:100.0];

    if ([num3 isEqualToNumber:num4]) {

        NSLog(@"两个对象值相等");

    }else{

        NSLog(@"两个对象值不相等");

    }

    if ([num3 isEqualToNumber:num4]) {

        NSLog(@"两个对象值相等");

    }else{

        NSLog(@"两个对象值不相等");

    }

    //4.Compare: 得到两个对象比较的关系

    NSLog(@"%ld",[num3 compare:num4]);

    //注意不能重新初始化已经存在的NSNumber对象,默认NSNumber对象为常量指针

}


// NSString 对象   不可变字符串

// OC中提供的NSString类是一个UniChar(2字节)字符串(也就是字符串可以任意类型字符组成)

// %@   默认调用description方法

void NSStringTest(){

    //1、不可变字符串初始化

    // 常量区字符串

    NSString *str1=@"first string";

    NSLog(@"%@",str1);

    // 实例方法

    NSString *str2=[[NSString alloc]initWithString:@"second string"];

    NSLog(@"%@",str2);

    [str2 release];

    // 实例方法 以特定格式初始化字符串

    //用整数、float初始化一个字符串

    NSString *str3=[[NSString alloc]initWithFormat:@"%d",100000];

    NSLog(@"%@",str3);

    //用对象初始化一个字符串

    NSString *str4=[[NSString alloc]initWithFormat:@"%@",[NSDate date]];

    NSLog(@"%@",str4);

    [str3 release];

    [str4 release];

    // 类方法  默认放入自动释放池,不用release

    NSString *str5=[NSString stringWithFormat:@"thread string"];

    NSLog(@"%@",str5);

    NSString *str6=[NSString stringWithFormat:@"%f",200.123];

    NSLog(@"%@",str6);

    

    // 2、连接两个字符串

    NSString *str7=@"Hello ";

    NSString *str8=@"world";

    NSString *str9=[str7 stringByAppendingString:str8];

    NSLog(@"%@",str9);

    NSLog(@"%@",str7);

    NSLog(@"%@",str8);

    // 3、比较两个字符串

    if ([str7 isEqualToString:str8]) {

        NSLog(@"两个对象值相等");

    }else{

        NSLog(@"两个对象值不相等");

    }

    //4.Compare: 得到两个对象比较的关系

    NSLog(@"%ld",[str7 compare:str8]);

    //5.忽略大小写 caseInsensitiveCompare

    NSLog(@"%ld",[str7 caseInsensitiveCompare:str8]);

    //6.字符串全部转成大写(原字符串不变)

    NSLog(@"%@",[str7 uppercaseString]);

    //7.字符串全部转成小写(原字符串不变)

    NSLog(@"%@",[str7 lowercaseString]);

    //8.subStringFromIndex:从某一个位置开始截取字符串,到最后

    NSString *str10=@"123456789";

    

    NSLog(@"%@",[str10 substringFromIndex:5]);

    //9.subStringToIndex:从第一个位置开始截取字符串,到Index

    NSLog(@"%@",[str10 substringToIndex:5]);

    //10.subStringWithRange:从某一个位置开始截取多长的字符串

    NSLog(@"%@",[str10 substringWithRange:NSMakeRange(2, 6)]);//2:开始截取的位置   6:截取的长度

}


// NSMutableString :可变字符串 继承自NNString

void NSMutableStringTest(){

    // 1.初始化

    // 实例方法

    NSMutableString *str1=[[NSMutableString alloc]initWithCapacity:10];//内存自动管理

    // 类方法

    NSMutableString *str2=[NSMutableString stringWithCapacity:10];

    //追加

    [str2 appendString:@"Hello "];

    [str2 appendString:@"world"];

    NSLog(@"%@",str2);

    //插入

    [str2 insertString:@"sssssssssss" atIndex:6];

    NSLog(@"%@",str2);

    //删除

    [str2 deleteCharactersInRange:NSMakeRange(2, 6)]; // 2:开始删除位置  6:删除长度

    NSLog(@"%@",str2);

    //直接修改(替换)字符串内容

    [str2 setString:@"hahahaha"];

    NSLog(@"%@",str2);

}


// NSArray:数组,对象的集合(不能存放基本数据类型)

// 类型可以不相同,加入数组中对象引用计数+1,从数组中移除对象,引用计数-1

void NSArrayTest(){

    // 1.初始化

    // 实例方法

    NSString *str1=@"abcdefg";

    NSNumber *num1=[NSNumber numberWithInt:123456];

    NSURL *url1=[NSURL URLWithString:@"http://www.baidu.com"];

    NSArray *array1=[[NSArray alloc]initWithObjects:str1,num1,url1, nil];

    // 类方法

    NSArray *array2=[NSArray arrayWithObjects:str1,num1,url1, nil];

    

    //2.返回数组元素个数

    NSLog(@"array1数组元素个数:%ld",[array1 count]);

    //3.根据下标获得元素对象

    NSLog(@"%@",[array1 objectAtIndex:0]);

    //4.根据元素对象获得所在位置

    NSLog(@"对象获得所在位置:%ld",[array1 indexOfObject:str1]);

    //5.快速遍历(从缓存读数据)

    for (id element in array2) {

        NSLog(@"%@",element);

    }

    NSLog(@"========================");

    NSLog(@"%@",array2);

    //6.数组排序

    NSArray * array3=[NSArray arrayWithObjects:@"23",@"9",@"56",@"33",@"78", nil];

    NSArray * array4=[array3 sortedArrayUsingSelector:@selector(compare:)];

    for (id element in array4) {

        NSLog(@"%@",element);

    }

}

// NSMutableArray:可变数组,继承自NSArray

// 可变数组使用前需要先开辟空间

void NSMutableArrayTest(){

    //1.初始化

    // 实例方法

    NSMutableArray *array1=[[NSMutableArray alloc]initWithCapacity:10];

    // 类方法

    NSMutableArray *array2=[NSMutableArray arrayWithCapacity:10];

    

    //2.添加元素(默认添加数组尾部)

    [array1 addObject:@"hehe"];

    [array1 addObject:@"haha"];

    

    NSLog(@"%ld",[array1 count]);

    

    //3.插入元素

    [array1 insertObject:@"jack" atIndex:1];

    //4.根据下标删除元素

//    [array1 removeObjectAtIndex:1];

    //5.删除数组中最后一个元素

//    [array1 removeLastObject];

    //6.删除数组中所有元素

//    [array1 removeAllObjects];

    [array1 removeObject:@"haha" inRange:NSMakeRange(0, 2)];

    for (id element in array1) {

        NSLog(@"%@",element);

    }

    

}

// 不可变字典:NSDictionary 标准的key valude 键值对

// key 一般使用字符串

// value:任意类型对象,不能为nil

// 每一组key value 分隔

void NSDictionaryTest(){

    // 初始化

    NSDictionary * dic=[[NSDictionary alloc]initWithObjectsAndKeys:@"zhangsan",@"name",@"man",@"sex",@"22",@"age", nil];

    //获取所有key

    NSArray *keyArray=[dic allKeys];

    // 根据key 得到value

    NSArray *valueArray=[dic allValues];

    // 根据key查找对相应的value

    NSLog(@"%@",[dic objectForKey:@"name"]);

    // 根据valuekey做一个排序,得到一个排好序的key集合

    NSArray* sortkeyArray=[dic keysSortedByValueUsingSelector:@selector(compare:)];

    NSLog(@"%@",keyArray);

    for (id elem in sortkeyArray) {

        NSLog(@"%@",elem);

    }

}


// 可变字典 NSMutableDictionary

void NSMutableDictionaryTest(){

    // 添加key value

    NSMutableDictionary *dic=[[NSMutableDictionary alloc]initWithCapacity:10];

    [dic setObject:@"zhangsan" forKey:@"name"];

    [dic setObject:@"man" forKey:@"sex"];

    [dic setObject:@"talk" forKey:@"enjoy"];

    

    // 根据key删除value

    [dic removeObjectForKey:@"enjoy"];

    NSArray *keyArray=[dic allKeys];

    NSLog(@"%@",keyArray);

    [dic release];

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值