Foundation-04_集合类_NSArray

NSArray:不可变数组

NSMutableArray:可变数组

 

NSArray

OC数组不能存放nil值

OC数组只能存放OC对象,不能存放非OC对象,比如:int、struct、enum等

这个array永远是空数组

NSArray *arr1 = [NSArray array];

nil是数组元素结束的标记

NSArray *arr2 = [NSArray arrayWithObjects:@"jack",@"Rose",nil];

 快速创建一个NSAssay对象(@[]创建一个数组对象)

    NSArray *arr3 = @[@"jack",@"rose",@"yao"];

返回数组元素个数

[arr2 count];

arr2.count;

以前访问数组元素的方法

[arr2 objectAtIndex:1];

    现在访问数组元素的方法(编译器特性)

    arr2[1];

遍历数组

for (int i=0; i < arr3.count; i++)

{

NSLog(@"%@",arr3[i]);

}

退出for循环的话使用break;

快速遍历 (id obj 代表着数组中的每一个元素)

    for (id obj in arr3)

    {

        NSUInteger i =  [arr3 indexOfObject:obj];//获取元素在数组中的位置

        NSLog(@"%@",obj);

    }

 

每遍历一个元素,就会调用一次block

    并且当前元素和索引位置当做参数传递给block

[arr3 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

        NSLog(@"-");

        if(idx == 0)

        { 

            //停止遍历

            *stop = YES;

        }

    }];

 BOOL *stop是和break相同的功能,退出遍历

NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

NSArray *array = [content componentsSeparatedByString:@"\n"];

根据后面的字符串将前面的字符串分割(相当于c#中的split)

根据传递过来的路径计算文件总的行数:  

 

NSFileManager:文件管理者(和C#中的File类相似) 

    创建方式: NSFileManager *mgr = [NSFileManager defaultManager];

 

fileExistsAtPath:判断path是文件还是文件夹(如果是文件,返回dir=NO,如果是文件夹返回dir=YES)

        当文件存在返回YES,文件不存在返回NO

BOOL  b =   [mgr fileExistsAtPath:path isDirectory:&dir];

contentsOfDirectoryAtPath:查询文件夹下的所有文件夹和文件,返回一个数组NSArray

NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];

pathExtension:获取路径的扩展名

isEqualToString:比较两个字符串是否相等

NSString *extension = [[path pathExtension] lowercaseString];//获取文件扩展名并且转换成小写
  if (![extension isEqualToString:@"h"]

stringByReplacingCharactersInRange:使用新的字符串替换字符串中的某一范围内的字符串

// 删掉文件路径前面的/Users/apple/Desktop/iOS课堂共享/0722课堂共享/

NSRange range = [path rangeOfString:@"/Users/apple/Desktop/iOS课堂共享/0722课堂共享/"];

NSString *str = [path stringByReplacingCharactersInRange:range withString:@""];

NSUInteger codeLineCount(NSString *path)

{

1、创建文件管理者

NSFileManager采用了单例模式(在整个程序运行过程中只有一份)

下面这句代码调用多次,返回的也是同一个对象

NSFileManager *mgr = [NSFileManager defaultManager];

2、判断path是文件夹还是文件路径

BOOL dir = NO;//标记是否为文件夹

整个路径是否存在

BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir];

if(!exist)

{

return 0;

}

if(dir)

{

保存行数

NSUInteger count = 0;

存储着当前文件夹下面的所有内容(文件夹和文件)

NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];

遍历数组中的所有元素

for (NSString *fileName in array)

{

子文件或者子文件夹的全路径

NSString *fullPath = [NSString stringWithFormat:@"%@/%@",path,fileName];

递归调用

count += codeLineCount(fullPath);

}

return count;

}

else

{

// 判断文件的拓展名(忽略大小写)

NSString *extension = [[path pathExtension] lowercaseString];

if (![extension isEqualToString:@"h"]

&& ![extension isEqualToString:@"m"]

&& ![extension isEqualToString:@"c"])

{

// 文件拓展名不是h,而且也不是m,而且也不是c

return 0;

}

// 加载文件内容

NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

// 将文件内容切割为每一行

NSArray *array = [content componentsSeparatedByString:@"\n"];

// 删掉文件路径前面的/Users/apple/Desktop/iOS课堂共享/0722课堂共享/

NSRange range = [path rangeOfString:@"/Users/apple/Desktop/iOS课堂共享/0722课堂共享/"];

NSString *str = [path stringByReplacingCharactersInRange:range withString:@""];

// 打印文件路径和行数

NSLog(@"%@ - %ld", path, array.count);

return array.count;

}

}

NSMutableArray

基本用法:

//初始化

NSMutableArray *array = [NSMutableArray arrayWithObjects:@"Rose",@"Tom", nil];

//添加元素

[array addObject:@"jack"];

//删除所有元素

[array removeAllObjects];

//删除指定对象

[array removeObject:@"jack"];

[array removeObjectAtIndex:1];

//错误写法

[array addObject:nil];

@[@"jack",@"rose"];//这个方法返回值是NSArray。所以下面的写法是错误的:

NSMutableArray *yy = @[@"jack",@"Rose"];

[yy addObject:@"jk"];

NSArray排序

NSMutableArray其他用法:

  删除元素

 添加元素:

 替换元素

排序

时间: 2024-12-26 13:00:13

Foundation-04_集合类_NSArray的相关文章

黑马程序员_OC学习笔记之Foundation框架集合类

OC--集合类 1.OC集合类包括NSArray,NSSet,NSDictionary都是以面向对象的方式操作数组,而且OC数组不像C语言中的数组只能存放同一种数据类型,它可以存放任意类型的对象,但是不能存放非OC对象类型如基本数据类型int,struct,enum等 2.OC数组是以对象的方式存在,因此在创建的时候需要为创建的对象前面加* 3.NSArray数组一旦创建就决定了是不是可变,而且永远是可变或不可变 4.NSArray数组和子类NSMutableArray的基本操作: 1>使用NS

Foundation框架中的集合类

一.NSString--不可变字符串类 它的创建方式有如下几种: 1.直接创建 NSString *变量名 = @“变量名”: 2.调用对象方法 initWithFormat 如: NSString *变量名 = [[NSString alloc]initWithFormat:@“字符串”]: 3.C语言字符串转成OC语言字符串 调用对象方法如  NSString *变量名 = [[NSString alloc]initWithUTF8String:“C语言字符串”]: 4.OC语言字符串转换成

OC学习笔记 Foundation 集合类 字典Dictionary

字典 由键-值对组成的数据集合 4种创建字典方式 1>针对单个键值对 直接赋值 1 NSDictionary *dic = [NSDictionary dictionaryWithObject:@"dajie" forKey:@"name"];//直接创建字典 2 id object = [dic objectForKey:@"name"];// 取出name键对应值 3 NSLog(@"%@",object); 2&g

Foundation框架的结构体和集合类

结构体: NSRange      NSPoint        NSSize         NSRect NSRange:表示范围,里面有两个变量(location(位置),length(长度)). 用法:NSRange  变量名  =  NSMakeRange(location , length) 常用于查找某个字符串在某个字符串中的范围 如: NSString *s  = @"wangning"; NSRange range = [s rangeOfString:@"

【黑马程序员】————Foundation框架02常用类—集合类

NSArray ->NSMutableArray NSSet ->NSMutableSet NSDictionary ->NSMutableDictionary 1.NSArray/NSMutableArray NSArray :不可变数组 NSMutableArray : 可变数组 基本使用 1 void use() 2 { 3 /* 4 C数组对比 5 int a = 5; 6 7 int ages[10] = {1, 90, 89, 17}; 8 9 Person *p = [[P

OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

1.NSNumber 这个类主要是用来封装基本类型的,说到这里,就不得不说一下了: OC中的集合是不允许存入基本类型的,所以NSNumber类就诞生了,需要将基本类型封装一下,然后存进去,这个类似于Java中的自动装箱和拆箱,Java中的集合其实也是不允许存入基本类型的,但是我们任然看可以那么操作,就是因为有自动装箱功能,如果你将Eclipse的JDK改成5.0之前的,你看看还能操作吗.. 注:那为什么基本类型不能存入到集合中呢? 原因是在操作集合的时候会操作集合元素中的方法,但是基本类型是没有

OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类

在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类: http://blog.csdn.net/jiangwei0910410003/article/details/41788223 今天我们继续来看一下Foundation框架中的NSArray类和NSMutableArray类,其实NSArray类和Java中的List差不多,算是一种数据结构,当然我们从这两个类可以看到,NSArray类是不可变的,NSMutableArray类是可变的.

黑马程序猿————OC在Foundation框架结构和字符串

------<a href="http://www.itheima.com" target="blank">Java火车.Android火车.iOS火车..Net火车</a>.我们期待与您的沟通! ------- Foundation框架中包括了非常多开发中经常使用的数据类型,比方.结构体,字符串.集合类等.是其它iOS框架的基础. 假设想要使用Foundation框架的数据类型,那么仅仅要包括它的 头文件就能够了.即#import<F

ios9基础知识总结(foundation)笔记

类:NSObject .NSString.NSMutableString.NSNumber.NSValue.NSDate.NSDateFormatter.NSRange.Collections:NSSet.NSArray(Ordered.Copy).NSMutableArray.NSMutableSet.NSDictionary ====================================================================================