A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


黑马程序员——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
  1. int main(int argc, const char * argv[]) {
  2.     @autoreleasepool {
  3.       
  4.         //创建可变字符串
  5.         NSMutableString *str=[NSMutableString string];
  6.         
  7.         NSMutableString *str1=[NSMutableString stringWithFormat:@"asdasd"];
  8.         
  9.         [str1 appendFormat:@"123"];
  10.         
  11.         NSString *str3=@"000000";
  12.         [str1 appendString:str3];
  13.         NSLog(@"str1=%@",str1);
  14.         
  15.    
  16.         NSString *str5=@"hello";
  17.         //此时options:<#(NSStringCompareOptions)#> 括号内可以设置为0 0表示参数不起作用 因为是位枚举 才可以这么用
  18.         NSRange range= [str5 rangeOfString:@"o" options:0 range:NSMakeRange(0, 5)];
  19.         
  20.         if (range.location!=NSNotFound) {
  21.             
  22.             NSLog(@"%lu%\n%lu",range.location,range.length);
  23.         }else
  24.         {
  25.         
  26.             NSLog(@"no");
  27.         
  28.         }
  29.     }
  30.     return 0;
  31. }
复制代码


Array增删改查
  1. int main(int argc, const char * argv[]) {
  2.     @autoreleasepool {
  3.         
  4.         NSMutableArray *arr1=[NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];
  5.         // 增加元素
  6.         [arr1 addObject:@"222"];
  7.         NSLog(@"arr1=%@",arr1);
  8.         //根据数组元素下标增加
  9.         [arr1 insertObject:@"333" atIndex:2];
  10.          NSLog(@"arr1=%@",arr1);
  11.         
  12.         //修改
  13.         [arr1 replaceObjectAtIndex:3 withObject:@"444"];
  14.         NSLog(@"arr1=%@",arr1);
  15.         
  16.         // 删除
  17.         // 根据元素下标删除
  18.         [arr1 removeObjectAtIndex:3];
  19.         NSLog(@"arr1=%@",arr1);
  20.         // 根据元素内容删除
  21.         [arr1 removeObject:@"4"];
  22.         NSLog(@"arr1=%@",arr1);
  23.         //全部删除
  24. //        [arr1 removeAllObjects];
  25. //         NSLog(@"arr1=%@",arr1);
  26.         //查找
  27.         if ([arr1 containsObject:@"333"]) {
  28.             
  29.             NSLog(@"查找成功!");
  30.         }
  31.         // 替换exchangeObjectAtIndex
  32.         [arr1 exchangeObjectAtIndex:1 withObjectAtIndex:3];
  33.         NSLog(@"arr1=%@",arr1);
  34.       
  35.     }
  36.     return 0;
  37. }
复制代码


字典增删改查

  1. int main(int argc, const char * argv[]) {
  2.     @autoreleasepool {
  3.         //可变字典才可以改xxxx
  4. //        NSDictionary *dict=[NSDictionary dictionaryWithObjectsAndKeys:@"1":@"!!!",@"2":@"222", nil];
  5.         NSMutableDictionary *dict=[NSMutableDictionary dictionary];
  6.         //增加
  7.         [dict setValue:@"333" forKey:@"3"];
  8.         [dict setValue:@"312" forKey:@"2"];
  9.         [dict setValue:@"3da3" forKey:@"1"];
  10.          NSLog(@"%@",dict);
  11.         //修改
  12.         [dict setObject:@"222" forKey:@"3"];
  13.         NSLog(@"%@",dict);
  14.         // 查找 allKeys显示所有k
  15.         NSArray *arr= [dict allKeys];
  16.         if ([arr containsObject:@"1"]) {
  17.             NSLog(@"已找到");
  18.         }
  19.         
  20.         
  21.    
  22.     }
  23.     return 0;
  24. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马