黑马程序员技术交流社区
标题:
黑马程序员——oc语言学习心得—— Foundaction
[打印本页]
作者:
任子杰
时间:
2015-10-31 16:18
标题:
黑马程序员——oc语言学习心得—— Foundaction
黑马程序员——oc语言学习心得—— Foundaction
------
Java培训
、
Android培训
、
iOS培训
、
.Net培训
、期待与您交流------
Foundation框架中常用的类有:
NSString——字符串
NSArray——数组
NSNumber——数字
NSDate——日期
NSData——数据
NSDictionary——字典
以及它们对应的子类 NSMutableString、NSMutableArray、NSMutableSet、NSMutableDictionary等。
父类统一为不可变而子类可变,还包括NSDate、NSObject
可变和不可变的区别是对象内容的可变和不可变,子类既然是继承父类那么子类可以使用父类中的任意方法。
一、字符串(NSString类型)
格式字符%@可以显示字符串,数组,字典和集合的全部内容。
1. 字符串比较
NSString *thing1 =@“hello 5”;
NSString *thing2 = [NSString stringWithFormat: @"hello %d",5];
if([thing1 isEqualToString: thing2])
{
NSLog(@"They are the same!");
}
用到了两个字符串的方法,stringWithFormat:是格式化字符串输出。isEqualToString:是判断两个字符串是否相同。
用“==”运算符比较,只能判断thing1和thing2的指针数值是否相同。而不能判断是否指向同一个对象。由于thing1和thing2是不同的字符串,所有这边用这个运算符比较的话,会被认为是不同的。
2. 字符串的可变性
在OC中,NSString类型是不可变的,即:一旦被创建,便不能变化。如果要对字符串进行改变的话,则在Cocoa中,提供了一个NSString的子类,叫NSMutableString。
1 NSMutableString *string = [NSMutableString stringWithCapacity:50];
2 [string appendString: @"Hello "];
3 [string appendFormat: @"NSString %d", 2];
定义用的关键字:stringWithCapacity。运行结果等于string被两次赋值,最后结果是:“Hello NSString 2”。
二NSArray和NSDictionary
集合类型,就相当于C语言中的数组。NSArray是一个Cocoa类,用来存储对象的有序列表。只能存OC对象,而不能存C语言的基本数据类型。同时,也不能直接存nil(对象的NULL值)。
1. 创建一个NSArray的格式:
1 NSArray *array1 = [NSArray arrayWithObjects: @"one", @"two", @"three", nil];
这里,我们定义的集合有三个元素,最后面的nil并不是一个元素,而是结束的标记符号。这也是为什么集合类型不能存nil的原因。
只要是个集合,就有count获取集合中元素的个数,index来获取指定位置的元素。注意,获取元素的index值不能大于集合总数count,否则会报错!
for(NSInteger i=0; i< [array1 count]; i++)
{
NSLog(@"index %d is %@", i, [array1 objectAtIndex: i]);
}
2. 可变集合
和NSString一样,NSArray创建也是不可变对象,一旦创建就不能被修改。因此,集合类型也有子类型是可以变的:NSMutableArray。
和NSString一样,定义可变集合也有配套的关键字:arrayWithCapacity。
NSMutableArray *array = [NSMutableArray arrayWIthCapacity: 5];
for(NSInteger i=0; i<5; i++)
{
Tire *tire = [[Tire alloc] init];
[array addObject: tire];
}
[array removeObject: 1]; // 元素索引从0开始。
3.NSDictionary类型
定义字典类型对象的格式:
1 NSDictionary *tires = [NSDictionary dictionaryWithObjectsAndKeys: t1, @"tire1", t2, @"tire2", t3, @"tire3", nil]; // 也是用nil表示结束
字典类型还有一种创建方法:
NSMutableDictionary *tires = [NSMutableDictionary dictionary];
[tires setObject:t1 forKey:@"tire1"];
[tires setObject:t2 forKey:@"tire2"];
[tires setObject:t3 forKey:@"tire3"];
如果要删除字典中的元素,可以用:
[tires removeObjectForKey: @"tire1"];
可变字符串
NSMutableString
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建可变字符串
NSMutableString *str=[NSMutableString string];
NSMutableString *str1=[NSMutableString stringWithFormat:@"asdasd"];
[str1 appendFormat:@"123"];
NSString *str3=@"000000";
[str1 appendString:str3];
NSLog(@"str1=%@",str1);
NSString *str5=@"hello";
//此时options:<#(NSStringCompareOptions)#> 括号内可以设置为0 0表示参数不起作用 因为是位枚举 才可以这么用
NSRange range= [str5 rangeOfString:@"o" options:0 range:NSMakeRange(0, 5)];
if (range.location!=NSNotFound) {
NSLog(@"%lu%\n%lu",range.location,range.length);
}else
{
NSLog(@"no");
}
}
return 0;
}
复制代码
Array增删改查
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSMutableArray *arr1=[NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];
// 增加元素
[arr1 addObject:@"222"];
NSLog(@"arr1=%@",arr1);
//根据数组元素下标增加
[arr1 insertObject:@"333" atIndex:2];
NSLog(@"arr1=%@",arr1);
//修改
[arr1 replaceObjectAtIndex:3 withObject:@"444"];
NSLog(@"arr1=%@",arr1);
// 删除
// 根据元素下标删除
[arr1 removeObjectAtIndex:3];
NSLog(@"arr1=%@",arr1);
// 根据元素内容删除
[arr1 removeObject:@"4"];
NSLog(@"arr1=%@",arr1);
//全部删除
// [arr1 removeAllObjects];
// NSLog(@"arr1=%@",arr1);
//查找
if ([arr1 containsObject:@"333"]) {
NSLog(@"查找成功!");
}
// 替换exchangeObjectAtIndex
[arr1 exchangeObjectAtIndex:1 withObjectAtIndex:3];
NSLog(@"arr1=%@",arr1);
}
return 0;
}
复制代码
字典增删改查
int main(int argc, const char * argv[]) {
@autoreleasepool {
//可变字典才可以改xxxx
// NSDictionary *dict=[NSDictionary dictionaryWithObjectsAndKeys:@"1":@"!!!",@"2":@"222", nil];
NSMutableDictionary *dict=[NSMutableDictionary dictionary];
//增加
[dict setValue:@"333" forKey:@"3"];
[dict setValue:@"312" forKey:@"2"];
[dict setValue:@"3da3" forKey:@"1"];
NSLog(@"%@",dict);
//修改
[dict setObject:@"222" forKey:@"3"];
NSLog(@"%@",dict);
// 查找 allKeys显示所有k
NSArray *arr= [dict allKeys];
if ([arr containsObject:@"1"]) {
NSLog(@"已找到");
}
}
return 0;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2