黑马程序员——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;
- }
复制代码
|
|