黑马程序员--Foundation框架下三大类简介和基本方法

NSString :
NSString *str = @"hello world!";

NSString *str2 = [[NSString alloc] initWithString:str];

NSString *str3 = [[NSString alloc] initWithUTF85String:"hello world!"];
//用c的字符串创建OC的字符串对象


NSString *str4 = [[NSString alloc] initWithFormat:@"hello %d %c", 5, 'A'];
//使用格式符,拼接一个字符串


NSLog(@"%@", str);//打印字符串
后面三个通过alloc产生,必须通过release释放


创建临时字符串(自动释放):
NSString *str5 = [NSString stringWithUTF8String:"hello world!"];
NSString *str6 = [[NSString stringWithFormat:@"%d %@ %c", 1, @"hello world", 'R']];
NSString *str7 = [NSString stringWithString:str];


字符串自带很多方法
判断两个字符串是否相等:
BOOL ret = [str isEqualToString:str2];
NSLog(@"%d", ret); //输出为0,两个字符串不相等
判断两个字符串谁大谁小
NSComparisonResult ret = [str compare:str2];
if (ret == NSOrderedAscending)
{
NSLog(@"str < str2");
}
else if (ret == NSOrderedSame)
{
NSLog(@"str == str2");
}
else if (ret == NSOrderedDescending)
{
NSLog(@"str > str2");
}
显示字串在字符串中的位置
NSString * str = @"I am a so good man";
NSString *subStr = @"so";
NSRange range = [str rangeOfString:subStr];
NSlog(@"location:%lu length:%lu", range,location, range.length);


从字符串中提取新字符串生成新字符串,返回字符串地址
NSString *str = @"09081903";
NSString *str2 = [str substringToIndex:6];
//从str中提取从头至第6个字符串(不包括第6个,从0到5),生成新字符串,并返回字符串地址,开区间
生成一个新字符串,原字符串不变

   NSString *str3 = [str substringFromIndex:6];
//从str中提取第6个字符(包括第6个),到最后一个字符,生成新字符串,返回字符串地址,闭区间

NSRange range = {3, 4};
NSString *str = [str substringWithRange:range];
//从第3个开始,提取4个

可以用NSMakeRange(3,4)
NSString *str = [str substringWithRange:NSMakeRange(3,4)];


字符串的一个子类:
可变字符串 :字符串  
NSMutableString:增删改查
NSMutableString *Str = [[NSMutableString alloc] init];
   [str setString:@"hello"];

增:
追加:append
[str appendString:@"123"];
[str appendFormat:@"%c",'D'];
插入:insert
[str insertString:@"XXXX" atIndex:4];(从0开始数)
[str insertString:[NSString stringWithFormat:@"%d", -54] atIndex:7];
//插入特殊字符,可以通过创建一个临时字符串的方法


删:delete
[str deleteCharactersInRange:NSMakeRange(3,5)];

改:replace
[str replaceCharactersInRange:NSMakeRange(3,2) withString:@"RRRRRRRRRR"];
替换字符串的长度可以不一样


数组:
NSArray NSMutableArray
NSArray *array = [[NSArray alloc] initWithObjects:@"One", @"Two",@"Three", nil];
//数组的元素可以是任意的对象
//数组中装有元素的地址
//可以装在两个数组中,因为放的都是地址


NSLog(@"%@",array);
//打印数组就是打印数组的每个元素
//%@ , 对象  打印的是description的返回值


遍历:
//枚举器法
NSEnumerator * enumerator = [array objectEnumberator]; 
id obj;
while (obj = [enumerator nextObject])
{
NSLog(@"%@", obj);
}


快速枚举法:
for (id obj in array)
{
NSLog(@"%@", obj);
}
使用i值遍历
NSUInteger length = [array count];
obj = [array objectAtIndex:2];

NSInteger i;
for (i=0; i<[array count]; i++)
{
NSLog(@"%@", [array objectAtIndex:i]);


}


可变数组:
改变数组元素的个数和顺序
NSMutableArray *array = [[NSMutableArray alloc] init];
//创建一个空数组
[array addObject:@"one"];
[array addObject:@"two"];
//增加元素
[array removeObject:@"One"];//是同一个one如果字符串的内容完全相同,两者是同一个对象
[array remveObjectAtIndex:1];
//删除元素


//交换元素顺序
[array exchangeObjectAt:0 withObjectAtIndex:2];

使用枚举器法进行遍历,正序遍历的时候,对数组进行改变会出错,逆序遍历的时候,不会出错
NSMutableArray *array = [[NSMutableArray alloc] initWithObject:@"ont", @"Two", @"Three", nil];
NSEnumerator *enumerator = [array objectEnumerator];//正序遍历
NSString *str;
while (str = [enumerator nextObject])
{
[array removeLastObject]; //只会正常输出第一次
}

NSEnumerator *enumerator = [array reverseObjectEnumerator];//逆序遍历
//逆序遍历的时候允许修改数组的顺序和个数

使用i值遍历,可以进行修改
快速枚举法不能进行修改


//数组和字符串的联合使用
NSString *str = @"I am a so good man";
NSArray *array = [str componentsSeparatedByString:@" "];//用空格分割字符串,返回地址
NSLog(@"%@", array);
NSMutableArray *mutablearray = [[NSMutableArray alloc] init];
NSEnumerator *enumerator = [array reverseObjectEnumerator];//逆序遍历
NSString *obj;
while (obj = [enumerator nextObject])
{
[mutableArray addObject:obj];
}
NSLog(@"%@", mutableArray);


//将数组中内容拼成一个新字符串
NSString * newStr = [mutableArray componentsJoinByString:@" "];
NSLog(@"%@", newStr);




字典 可变字典
NSDictionary  NSMutableDictionary
NSDictionary *dict = [[NSDictionary alloc] initWithObjectAndKeys:@"one", @"1", @"Two", @"2",@"Three", @"3", nil];
//字典中的元素是以键值对的形式存储
//@"one",@"1"组成了一个键值对
//@"one"成为值(value),@"1"成为键(key)
//键值对的值和键,都是任意的对象,但是键往往使用字符串
//字典存储对象的地址没有顺序


NSLog(@"%@", dict); 


遍历:键的遍历和值的遍历
//键的遍历 枚举器法
NSEnumerator *enumerator = [dicct keyEnumerator];
id obj;
while (obj = [enumerator nextObject])
{
NSLog(@"%@", obj);
}
//值的遍历
NSEnumerator *enumerator = [dicct objectEnumerator];
id obj;
while (obj = [enumerator nextObject])
{
NSLog(@"%@", obj);
}


//快速枚举法
NSString *str = [dict objectForkey:@"1"];//通过键找到值
for (id obj in dict)
{
NSLog(@"%@", obj); //键值
NSLog(@"%@", [dict objectForKey:obj]);//根据键找到值
}

可变字典
添加键值对
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"One" forKey:@"1"];
[dict setObject:@"Two" forKey:@"2"];


删除键值对
[dict removeObjectForKey:@"1"];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值