【Foundation Frame】NSArray

NSArray

代表元素有序、可重复的一个集合,集合中每个元素都有对应的顺序索引。

创建NSArray的常见方法

1、array:创建一个不包含任何元素的空NSARRAY

2、arrayWithObject/initWithObject:创建只包含指定元素的NSArray

3、arrayWithObjects/initWithObjects:创建只包含一个或多个元素的NSArray

4、arrayWithContentsOfFile:读取文件内容来创建NSArray

(以下程序列举了常用的NSArray方法)

//

//  main.m

//  Array

//

//  Created by mac on 14-12-3.

//  Copyright (c) 2014年
mac. All rights reserved.

//

#import
<Foundation/Foundation.h>

#import "People.h"

//静态创建数组的方法

void staticCreatArray()

{

NSArray * array1 = [NSArray
arrayWithObject:@"NSArray"];

NSLog(@"Way 1: %@",array1);

NSArray * array2 = [NSArray
arrayWithObjects:@"NSArray1",@"NSArray2",@"NSArray3",
nil];

NSLog(@"Way 2: %@",array2);

NSArray * array3 = [NSArray
arrayWithArray:array2];

NSLog(@"Way 3: %@",array3);

[array1 release];

[array2 release];

[array3 release];

}

//动态创建数组的方法

void dynamicCreatArray()

{

NSArray * array1 = [[NSArray
alloc]initWithObjects:@"1,2,3,4,5",@"HELLO",
nil];

NSLog(@"Way 1: %@",array1);

NSArray * array2 = [[NSArray
alloc]initWithArray:array1];

NSLog(@"Way 2: %@",array2);

}

//查询集合元素在NSArray中的序列

void searchArray()

{

NSArray * array1 = [NSArray
arrayWithObject:@"NSArray"];

NSArray * array2 = [NSArray
arrayWithObjects:@"NSArray1",@"NSArray2",@"NSArray3",
nil];

NSArray * array3 = [[NSArray
alloc]initWithObjects:@"1,2,3,4,5",@"HELLO",@"HELLO",
nil];

NSLog(@"%lu",[array1
count]);

NSLog(@"%hhd",[array3
containsObject:@"HELLO"]);

NSLog(@"%@",[array2
lastObject]);

NSLog(@"%@",[array2
objectAtIndex:1]);

NSLog(@"%lu",[array2
indexOfObject:@"NSArray1"]);

NSRange range =
NSMakeRange(0,
2);

NSLog(@"%lu",[array2
indexOfObject:@"NSArray2"
inRange:range]);

[array3 release];

}

//对数组进行比较

void compareArray()

{

NSArray * array1 = [NSArray
arrayWithObject:@"NSArray"];

NSArray * array11 = [array1
copy];

NSArray * array2 = [NSArray
arrayWithObjects:@"NSArray1",@"NSArray2",@"NSArray3",
nil];

NSArray * array3 = [[NSArray
alloc]initWithObjects:@"1,2,3,4,5",@"HELLO",@"HELLO",@"NSArray1",
nil];

NSLog(@"%hhd",[array1
isEqualToArray:array11]);

NSLog(@"%@",[array2
firstObjectCommonWithArray:array3]);

[array3 release];

}

//遍历数组

void ergodicArray()

{

NSArray * array2 = [NSArray
arrayWithObjects:@"NSArray1",@"NSArray2",@"NSArray3",
nil];

//C语言方式

for (int
i = 0; i<[array2
count]; i++)

{

NSLog(@"%@",[array2
objectAtIndex:i]);

}

//快速遍历

for (id
obj in array2)

{

NSLog(@"    %@",obj);

}

//Block方法遍历

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

{

if (idx<1)

{

* stop = YES ;

}

NSLog(@"%lu,%@",idx,obj);

}];

//迭代器方法遍历

NSEnumerator * enumerator =[array2
objectEnumerator];

id obj ;

while (obj= [enumerator
nextObject]) {

NSLog(@"%@",obj);

}

}

//其他方法

void otherArray()

{

NSArray * array1 = [NSArray
arrayWithObject:@"NSArray"];

NSArray * array2 = [NSArray
arrayWithObjects:@"NSArray1",@"NSArray2",@"NSArray3",
nil];

//快速遍历array

for (id
obj in array2)

{

NSLog(@"%@",obj);

}

array2 = [array2 arrayByAddingObject:@"NSArray4"];

for (id
obj in array2)

{

NSLog(@"  %@",obj);

}

array2 = [array2 arrayByAddingObjectsFromArray:array1];

for (id
obj in array2)

{

NSLog(@"    %@",obj);

}

NSArray *pathArray = [NSArray
arrayWithObjects:@"here",
@"be",
@"dragons",
nil];

NSLog(@"%@",pathArray);

NSLog(@"%@",[pathArray
componentsJoinedByString:@"->"]);

NSRange range =
NSMakeRange(0,
3);

NSLog(@"%@",[array2
subarrayWithRange:range]);

}

//排序

void sortArray()

{

NSArray * array2 = [NSArray
arrayWithObjects:@"NSArray2",@"NSArray1",@"NSArray3",
nil];

NSLog(@"Before Sort:%@",[array2
componentsJoinedByString:@" "]);

//选择排序

NSArray * selectSortArray = [array2
sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

NSLog(@"After Sort :%@",[selectSortArray
componentsJoinedByString:@" "]);

NSArray * array3 = [NSArray
arrayWithObjects:@"NSArray2",@"NSArray1",@"NSArray3",@"NSArray5",@"NSArray4",
nil];

NSLog(@"Before Sort:%@",[array3
componentsJoinedByString:@" "]);

}

int main(int
argc, const
char * argv[]) {

@autoreleasepool {

// insert code here...

// NSLog(@"Hello, World!");

// staticCreatArray();

//  dynamicCreatArray();

// searchArray();

//  compareArray();

// ergodicArray();

//  otherArray();

// sortArray();

}

return
0;

}

时间: 2024-10-07 20:05:13

【Foundation Frame】NSArray的相关文章

【Foundation Frame】NSString

NSString代表字符序列不可变的字符串,功能更强大,更方便简单. 下面代码列举了大部分常用的NSString方法. // //  main.m //  OcString // //  Created by mac on 14-12-2. //  Copyright (c) 2014年 mac. All rights reserved. // #import <Foundation/Foundation.h> void dynamicCreateString() { //1 NSString

【Foundation Frame】NSDictionary/NSMutableDictionary

NSDictionary 用于保存具有映射关系的数据,NSDictionary 包含两组数据,一组用来保存key值,一组用来保存valure值. 一个Key可以对应多个value,反过来则不可以. // //  main.m //  NSDictionary // //  Created by mac on 14-12-4. //  Copyright (c) 2014年 mac. All rights reserved. // #import<Foundation/Foundation.h>

【Foundation Frame】NSMutableArray

NSArray 代表集合元素不可变的集合,一旦NSArray被创建成功,程序不能向集合中添加新元素,删除旧元素,替换旧元素. NSMultableArray 恰恰相反,为可变元素的集合,可以增加.删除.替换元素. 可进行的操作: 1.创建 arrayWithCapacity 2.增加元素,以add开头 3.删除元素,以remove开头 4.替换元素,以replace开头 5.对集合本身排序,以sort开头(与NSArray不同,NSMutable是对元素集合自身进行排序,NSArray则是返回一

【Foundation Frame】Struct

// //  main.m //  struct // //  Created by mac on 14-12-2. //  Copyright (c) 2014年 mac. All rights reserved. // #import <Foundation/Foundation.h> #pragma mark 基本数据类型---- void baseType() { //unsigned long  %lu NSUInteger i; //long NSInteger  j; //dou

黑马程序员---OC基础9【Foundation框架】【NSString介绍】【NSURL读写字符串】【NSString字符串比较】【NSString前后缀检查及搜索】【NSRange使用】

------- iOS培训.Android培训.Java培训.期待与您交流! ---------- [Foundation框架] 1.Foundation框架介绍 1)Foundation框架概念 框架是由许多类.方法.函数.文档按照一定的逻辑组织起来的集合 以便使研发程序变得 更容易在OS X下的Mac操作系统中大约有80个框架为所有程序开发奠定基础的框架称为Foundation 框架 2)Foundation框架的作用 Foundation框架是Mac\iOS中其他框架的基础 Foundat

【Foundation】NSFileManager文件操作.02

1.文件目录操作 // 1.创建文件操作对象fm,并打印出当前目录 NSFileManager *fm=[NSFileManager defaultManager]; // 获取当前目录 NSLog(@"当前目录:%@",[fm currentDirectoryPath]); ///2014-04-01 13:58:20.523 NSFileManager[1161:303] 当前目录:/Users/haiyefeng/Library/Developer/Xcode/DerivedDa

【翻译习作】 Windows Workflow Foundation程序开发-第一章01

第 1 章    欢迎来到工作流的世界 …思想如蝴蝶般飞到我身边 —— Gossard / Vedder (译注:Gossard与Vedder是来自Pearl Jam乐队的2名乐手,该句出自他们的歌曲<Even flow>) Windows Workflow可被看作是继COM+和分布式事务协调器(DTC)之后,Windows平台上最令人瞩目的一款中间件产品.它们之间的区别在于:不是每一个软件应用都需要进行分布式事务处理:但几乎每个软件都要在其内部实现工作流.为了能够领会微软设计Windows

【翻译习作】 Windows Workflow Foundation程序开发

近期整理硬盘,把09年的翻译习作<Windows Workflow Foundation程序开发>找出来了.现在又把译文过了一遍,做了些修改,贴出来献丑了.原书是<Programming Windows Workflow Foundation: Practical WF Techniques and Examples using XAML and C#>,作者K. Scott Allen,由Packt Publishing Ltd.出版. 当时我开始关注.NET 3.0,尤其对WF

【翻译习作】 Windows Workflow Foundation程序开发-前言

Windows Workflow Foundation程序开发-基于XAML和C#的WF实战技术与例程 ——C#程序员的WF功能与编程接口技术指导 前言 Windows Workflow Foundation(简称WF),是一项对工作流进行定义.执行和管理的技术.它是.NET框架3.0版的一部分,并且将来会被集成到Windows Vista操作系统中. 继COM+和分布式事务协调器之后,WF可被看作是Windows平台上最令人瞩目的一款中间件产品.WF与前两者的区别在于:不是每一个软件应用都需要