OC--Foundation-NSString,NSArray,NSSet



一、NSString

NSString : 不可变字符串
NSMutableString : 可变字符串

NSMutableString 继承自NSString
1.字符串的创建

NSString *s1 = @"jack";
   
NSString *s2 = [[NSString alloc] initWithString:@"jack"];
   
NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d", 10];

类方法: [NSString stringWithFormat:@""];

字符串转换  
// C字符串 --> OC字符串
NSString *s4 = [[NSString alloc] initWithUTF8String:"jack"];
// OC字符串 --> C字符串
const char *cs = [s4 UTF8String];
 

从文件中读取字符串   
NSUTF8StringEncoding 用到中文就可以用这种编码

NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];
   
类方法:   [NSString stringWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>];

    // URL : 资源路径
    // 协议头://路径
    // file://
    // ftp://
    // http://weibo.com/a.png

    
把字符串转换成一个URL
必须加上协议头
对象方法:NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/1.txt"];
类方法:   [NSURL URLWithString:<#(NSString *)#>];   
不必加上协议头
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/1.txt"];
   
NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
      
注意:一般都会有一个类方法跟对象方法配对


2.把字符串写入文件

字符串的导出
atomically:YES比较安全,当中途写入失败,文件不会创建
                 NO,中途写入失败,仍然创建

  [@"Jack\nJack" writeToFile:@"/Users/apple/Desktop/my.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];



3.NSMutableString创建

NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"];

拼接字符串
[s1 appendString:@" 11 12"];


二、NSArray

NSArray :不可变数组
NSMutableArray : 可变数组

int a = 5;
int ages[10] = {1, 90, 89, 17};
  
  
Person *p = [[Person alloc] init];
Person *persons[5] = {p,  [[Person alloc] init]};

OC数组不能存放nil值
OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等
   
这个array永远是空数组
NSArray *array = [NSArray array];
    

 1.NSArray的创建

NSArray *array2 = [NSArray arrayWithObject:@"jack"];
[array2 count];    
    
// nil是数组元素结束的标记
NSArray *array3 = [NSArray arrayWithObjects:@"jack", @"rose", nil];

    
NSArray *array4 = [NSArray arrayWithObjects:@"jack", @"rose", @"4324324", nil];
   
 
快速创建一个NSArray对象
NSArray *array4 = @[@"jack", @"rose", @"4324324"];
    
    

 2.NSArray的元素个数

NSLog(@"%ld", array3.count);
    

3.NSArray中元素的访问
   
NSLog(@"%@", [array3 objectAtIndex:1]);
    
    //array3[1];
 NSLog(@"%@", array3[0]);


4.遍历数组

创建数组 array
Person *p = [[Person alloc] init];
NSArray *array = @[p, @"rose", @"jack"];



遍历的几种方式
 
 for (int i = 0; i<array.count; i++)
       {
            NSLog(@"%@", array[i]);
       }


------------------------------------------------
 id obj代表着数组中的每一个元素
 int i = 0;
 for (id obj in array)
     {
      // 找出obj元素在数组中的位置
        NSUInteger i = [array indexOfObject:obj];
    
        NSLog(@"%ld - %@", i, obj);
         //i++;
    
          if (i==1)
            {
                break;
           }
        }


-----------------------------------------------
    [array enumerateObjectsUsingBlock:
    
     // 每遍历到一个元素,就会调用一次block
     // 并且当前元素和索引位置当做参数传给block
     ^(id obj, NSUInteger idx, BOOL *stop)
     {
         NSLog(@"%ld - %@", idx, obj);
        
        
         if (idx == 0)
         {
             // 停止遍历
             *stop = YES;
         }
        
     }];
   


---------------------------------------------------------------------------    
       
 void ^(myblock)(id, NSUInteger, BOOL *) = ^(id obj, NSUInteger idx, BOOL *stop)
        {
            NSLog(@"%ld - %@", idx, obj);
    
    
           if (idx == 0)
           {
                // 停止遍历
                *stop = YES;
            }
        };

       for (int i = 0; i<array.count; i++)
        {
            // 用来标记是否需要停止遍历
            BOOL isStop = NO;
    
            // 取出元素
            id obj = array[i];
           
            myblock(obj, i, &isStop);
            
            
            if (isStop)
            {
                break;
            }
        }

}


5.NSMutableArray : 可变数组

创建
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];
   
 添加元素
    [array addObject:[[Person alloc] init]];
   
    [array addObject:@"jack"];
   
 删除元素
    //[array removeAllObjects];

 删除指定的对象
    [array removeObject:@"jack"];
    [array removeObjectAtIndex:0];
   
错误写法
     [array addObject:nil];

注意:
@[] 只创建不可变数组NSArray
 
错误写法
    NSMutableArray *array = @[@"jack", @"rose"];
    [array addObject:@"jim"];



三、 NSFileManager
文件管理者

1.获得文件管理者
    NSFileManager *mgr = [NSFileManager defaultManager];
   
 2.标记是否为文件夹
    BOOL dir = NO;   // 标记是否为文件夹
标记这个路径是否存在
    BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir];

3.当一个路径为文件夹时,获得当前文件夹path下面的所有内容(文件夹、文件)
  NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];
        
4.获得子文件(夹)的全路径
   NSString *fullPath = [NSString stringWithFormat:@"%@/%@", path, filename];

5.判断文件扩展名(忽略大小写)
 NSString *extension = [[path pathExtension] lowercaseString];

 if (![extension isEqualToString:@"h"])
        {
            // 文件拓展名不是h
            return 0;
        }
    


四、NSSet
无序

NSSet和NSArray的对比
1> 共同点
* 都是集合,都能存放多个OC对象
* 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)
* 本身都不可变,都有一个可变的子类

2> 不同点
* NSArray有顺序,NSSet没有顺序

基本使用
 NSSet *s = [NSSet set];
   
NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil];
   
随机拿出一个元素
NSString *str =  [s2 anyObject];


添加元素
  NSMutableSet *s = [NSMutableSet set];
   
 [s addObject:@"hack"];
    
 删除元素
    [s removeObject:<#(id)#>];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值