黑马程序员-[OC]学习之旅-NSArray 和NSDictionary 的介绍

来源:互联网 发布:鬼怪故事 知乎 编辑:程序博客网 时间:2024/05/22 15:43

NSMutableString介绍

NSMutableString类是继承NSString类

和NSString的区别

NSString 是不可变,里面的文字内容是不能进行修改的

NSMutableString 是可变的,里面的内容是可以进行修改的

字符串的可变和不可变

不可变:指的是字符串在内存中占用的存储空间固定,并且存储内容不能发生变化

可变:指的是字符串在内存中占用存储空间可以不固定,并且存储的内容可以发生变化

增加内容


  1. NSMutableString *str=[NSMutableString stringWithFormat:@”jack”];

  2. [str appendString:@"ning"];   
-(void)appendFormat:(NSString *)format,....;

拼接string到最后面


拼接一段格式化字符串到最后面

  1. NSMutableString *str=[NSMutableString stringWithFormat:@”jack and rose”];

  2. NSRange range = [str rangeOfString:@"and"];

  3. [str deleCharactersInRange:range];  

在loc这个位置中插入aString 

  1. SMutableString *str=[NSMutableString stringWithFormat:@”jack and rose”];

  2. [str insertString:@"ning" atIndex:5]; 


-(void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString;

使用aString替换range范围内的字符串,一般不是以string开头的一般都不会产生一个新的字符

replaceOccurrencesOfString方法不需要传范围参数。


NSArray介绍

容不可改变;而且只能存放OC对象;

NSarray直接使用NSlog( )作为字符串输出的时候是小括号扩起来的形式;

只能存放任意的OC对象,并且是有顺序的,不能存放非OC对象,如基本数据类型。


创建数组的方法

+ (instancetype)array;

+ (instancetype)arrayWithObject:(id)anObject;
+ (instancetype)arrayWithObjects:(id)firstObj, ...;
+ (instancetype)arrayWithObjects:(id)firstObj, ...;
+ (instancetype)arrayWithArray:(NSArray *)array;
+ (id)arrayWithContentsOfFile:(NSString *)path; // 读取一个xml文件.
+ (id)arrayWithContentsOfURL:(NSURL *)url; // 读取一个xml文件.


使用NSArray的对象方法创建

NSArray *arr = [[NSArray alloc] initWithObjects:@"ning"];

使用已经存在的数组创建新的数组

NSSrray *arr2 = [[ NSArray alloc] initWithArray:arr];

NSString的常见用法:


获取集合元素的个数

  1. NSArray *arr = [[NSArray alloc]initWithObject:@"nint"];
  2. NSLog(@"%d",arr.count);

获取index位置的元素

  1. NSArray *arr = [[NSArray alloc]initWithObject:@"nint"];
  2. NSLog(@"%@",[arr objectAtIndex:0];);

是否包含某个元素

  1. NSArray *arr = [[NSArray alloc]initWithObject:@"nint"];
  2. BOOL isYes = [arr containsObject:@"nint"];


返回最后一个元素或第一个元素

  1. NSArray *arr = [[NSArray alloc]initWithObject:@"nint"];
  2. NSString *str = [arr lastObject];
  3. NSString *str2 = [arr firstObject];

查找某个元素的位置

-(NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;

  1. NSArray *arr = [[NSArray alloc]initWithObject:@"nint",@"out"];
  2. NSUInteger index = [arr indexOfObject:@"out"];

NSSArray的遍历

下标:

  1. NSArray *arr = [[NSArray alloc]initWithObject:@"1",@"2"];
  2. for(int i=0;i<arr.count;i++){
  3.     NSLog(@"%@",arr[i]);
  4. }
快速遍历

  1. NSArray *arr = [[NSArray alloc]initWithObject:@"1",@"2"];
  2. for(NSString *str in arr){
  3.     NSLog(@"%@",str);
  4. }
blockb遍历

  1. NSArray *arr = [[NSArray alloc]initWithObject:@"1",@"2"];
  2. [arr enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){
  3.    NSLog(@"下标:%ld,值:%@",idx,obj);
  4. }];


写文件

  1. NSArray *arr = [[NSArray alloc]initWithObject:@"1",@"2"];
  2. BOOL isYes = [arr writeToFile:@"/Users/Desktop/arr.plist" atomically:YEW];

读文件

  1. NSArray *arr = [NSArray arrayWithContentsOfFile:@"/Users/Desktop/arr.plist"];
  2. NSLog(@"%@"arr);
NSArray 与字符串

把数组元素连接成字符串


  1. NSArray *arr = [NSArray arrayWithObjects:@"2",@"d",@"d",nil];
  2. NSString *str = [arr componentsJionByString:@"#"];
  3. NSLog(@"%@",str);

字符串分隔

  • NSString *str = @"400-800-900";
  • NSArray *arr = [str componentsSepareteByString:@"-";
  • NSLog(@"%@",arr)'

    NSMutableArray基本使用

    NSMutableArray是NSArray的子类

    NSArray是不可变的,一旦初始化完毕后,它里面的内容永远固定的,不能删除里面的元素,也不能添加元素

    1. NSMutableArray *arr = [NSMutableArray array];

    2. NSMutableArray *arr2 = [[NSMutableArray alloc]initWithCapacity:5];
    3. 长度为5
    4. NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"1",@"2"];
    5. NSMutableArray *arr4 = [[NSMutableArray alloc] initWithObjects:@"1",nil];

    添加一个元素


    1. NSMutableArray *arr = [NSMutableArray array];
    2. [arr addObject:@"nig"];
    添加otherArray的全部元素到当前数组中


    1. NSMutableArray *arr = [NSMutableArray array];
    2. NSArray *arr2 = [[NSArray alloc]initWithObjectS:@"1",@"2",nil];
    3. [arr addObjectsFromArdObray:arr2];
    4.  
    5. 删除最后一个元素
    6. [arr removeLastObject];
    7. 删除所有元素
    8. [arr removeAllObject];
    9. 删除index 位置的元素
    10. [arr removeObjectAtIndex:1];
    11. 删掉特定的元素
    12. [arr removeObject:@"1"];
    13. 删掉range范围的所有元素
    14. [arr removeObjectInRange:{3,7}];
    用anObject替换index位置对应的元素

    1. NSMutableArray *arr4 = [[NSMutableArray alloc] initWithObjects:@"1",nil];
    2. [arr replaceObjectAtIndex: 2 withObject:@"one"];

    交换idx1和idx2位置元素

    1. NSMutableArray *arr4 = [[NSMutableArray alloc] initWithObjects:@"1",nil];
    2. [arr eXchangeObjectAtIndex:2 withObjectAtIndex 3];


    NSDictionary 介绍

    字典 通过一个key键可以找到对应的详细解释

    是不可变的,一旦初始化完成后,里面的内容无法修改

    NSDictionary的创建

    1. NSDictionary *dict = [NSDictionary dictionary];
    2. //创建空的字典
    3. NSDictionary *dict2 = [NSDictionary dictionaryWithObjectAndKeys@"value1,@"key1""nil];
    4. NSDictionary *dict3 = [NSDictionary dictionaryWithObject:@"ning" forKey:"zhi"];

    快速创建字典

    @{@“zs”:@"zhangsan",@"ls":@"lisi"};

    特点:

    字典存储的时候必须是键值对的方式存储

    键值对中存储的数据是无序的

    键值对集合可以根据键值快速获

    基本使用

    返回字典的键值对的数目-(NSUInteger)count;

    根据key去除value-(id)objectForKey:(id)aKey;

    遍历:

    快速:

    1. NSDictionary *dict =@{@“zs”:@"zhangsan",@"ls":@"lisi"};


    2. for(NSString *key in dict){
    3. NSLog(@"%@:%@",key,[dict objectForKey:key]);

    4. }
    快速遍历:

    [dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {}];

    1. NSDictionary *dict = @{@“zs”:@"zhangsan",@"ls":@"lisi"};


      1. [dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
      2. NSLog(@"%@:%@",key,obj);
      3. }];


    2. 0 0