Foundation ----->NSArray

1.数组的创建

    //注意:在OC的数组中,只能够存放对象
//    NSArray *array = [NSArray arrayWithObject:12];错误
    
    //创建字符串
    NSString *str1 = @"zhangsan";
    NSString *str2 = @"lisi";
    NSString *str3 = @"wangwu";
    
    //创建数组,并且设置多个元素
    //注意:是以nil结尾的
    NSArray *array1 = [[NSArray alloc] initWithObjects:str1,str2,str3, nil];
    NSLog(@"array1:%@",array1.description);
    
    //使用对应的类方法
    NSArray *array2 = [NSArray arrayWithObjects:str1,str2,str3, nil];
    NSLog(@"array2:%@",array2);
    
    //创建数组的同时初始化一个元素
    NSArray *array3 = [[NSArray alloc] initWithObjects:str1, nil];
    NSArray *array4 = [NSArray arrayWithObject:str1];
    NSLog(@"array3:%@ \n  array4:%@",array3,array4);
    
    //创建数组的同时使用一个已有的数组初始化
    NSArray *array5 = [[NSArray alloc] initWithArray:array2];
    NSArray *array6 = [NSArray arrayWithArray:array2];
    NSLog(@"array5:%@ \n  array6:%@",array5,array6);
    
    2.获取数组的相应元素
    
    //-----------根据下标取元素---------
    NSString *str = [array5 objectAtIndex:2];
    
    3.获取数组元素个数

    NSUInteger count = array5.count; //[array5 count];
    NSLog(@"count:%ld",count);
      
    4.判断某一个元素是否在一个数组中

    BOOL isContain = [array5 containsObject:@"zhaoliu"];
    if (!isContain) {
        NSLog(@"不包含zhaoliu");
    }
    
    5.根据某一个元素获取下标
    //如果有这个元素,则返回相应的下标,没有则返回NSNotFound
    NSInteger index = [array5 indexOfObject:@"zhaofei"];
    if (index == NSNotFound) {
        NSLog(@"没有响应的元素");
    }
    
    6.注意两个数组的区别

    //将array5中的所有元素交给array8
    NSArray *array8 = [NSArray arrayWithArray:array5];
    
    NSArray *array9 = [NSArray arrayWithObject:array5];
    NSLog(@"array9:%@",array9);

    7.获取数组中最前面/最后面的一个元素

    NSString *firstStr = [array8 firstObject];
    NSString *lastStr = [array8 lastObject];
    NSLog(@"firstStr:%@  lastStr:%@",firstStr,lastStr);
    
    8.截取数组
    NSArray *array10 = [[NSArray alloc] initWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
    //截取出@"2",@"3",@"4"
    NSRange rg = {1,3};
    NSArray *subArray = [array10 subarrayWithRange:rg];
    NSLog(@"subArray:%@",subArray);
    
        9.追加数组
    //追加一个元素
//    [array10 arrayByAddingObject:<#(nonnull id)#>]
    //在array10后面追加元素
    NSArray *addArray = [array10 arrayByAddingObjectsFromArray:array1];
    NSLog(@"%@",addArray);

    10.数组比较
    if ([array1 isEqualToArray:array2]) {
        NSLog(@"array1和array2相同");
    }
    
    11.判断两个数组的开头是否相同

    // 1,2,4,5    3,2,1,6
    NSArray *a = @[@"1",@"2",@"4",@"5"];
    NSArray *a2 = @[@"30",@"20",@"10",@"60"];
    NSString *sameS = [a firstObjectCommonWithArray:a2];
    NSLog(@"%@",sameS);
    if (![array1 firstObjectCommonWithArray:array10]) {
        NSLog(@"第一个元素不相同");
    }
    
    12.数组遍历

    //方式一:
    //遍历addArray
    //获取addArray数组的长度
    NSUInteger count2 = addArray.count;
    for (int i=0; i<count2; i++) { //注意数组越界
        //i:0....
        //根据下标获取元素
//        NSString *obj = [addArray objectAtIndex:i];
        //等价
        NSString *obj = addArray[i];
        NSLog(@"obj:%@",obj);
    }
    
    //方式二:快速遍历
    for (NSString *str in addArray) {
        NSLog(@"str:%@",str);
    }
    
    
    //------------数组新语法------------
//    int a[] = {1,2,3,4}
//    a[2]
    //创建并且初始化数组
    NSArray *array11 = @[@"1",@"2",@"3",@"4",@"5"];
    NSLog(@"%@",array11);
    
    //根据制定下标获取元素
    NSString *s = array11[3];
    NSLog(@"s:%@",s);
    
二:可变数组(NSMutableArray)
    
    NSString *s1 = @"zhaoliu";
    NSString *s2 = @"tianqi";
    NSString *s3 = @"suba";
    
    1.创建可变数组
    //不可以这么写
//    NSMutableArray *mutArray = @[s1,s2,s3];
    
    //创建一个容量为5的数组,可以存放超过5个元素,空间会自动增加
    NSMutableArray *mutArray1 = [NSMutableArray arrayWithCapacity:5];
    //注意:此时没有元素,0
    NSUInteger mutCount = mutArray1.count;
    NSLog(@"mutCount:%ld",mutCount);
    
    NSMutableArray *mutArray2 = [[NSMutableArray alloc] initWithObjects:s1,s2,s3, nil];
    
    1.添加元素
//    [mutArray2 addObject:str1];
//    [mutArray2 addObject:str2];
//    [mutArray2 addObject:str3];
    
    //2.将一个数组中的元素添加到可辨数组中
    [mutArray2 addObjectsFromArray:array1];
    
    //3.将一个数组作为一个元素添加到数组中
    [mutArray2 addObject:array1];
    
    2.插入元素

    [mutArray2 insertObject:@"1" atIndex:0];

    3.替换元素
    [mutArray2 replaceObjectAtIndex:1 withObject:@"bingge"];

    
    //可以替换多个
//    [mutArray2 replaceObjectsInRange:<#(NSRange)#> withObjectsFromArray:<#(nonnull NSArray *)#>]
    
    4.交换
    [mutArray2 exchangeObjectAtIndex:0 withObjectAtIndex:1];
    
    
    5.删除
    
    //删除所有元素
//    [mutArray2 removeAllObjects];
    
    //删除最后一个元素
//    [mutArray2 removeLastObject];
    
    //删除指定元素
//    [mutArray2 removeObject:@"bingge"];
    
//    /删除指定下标元素
//    [mutArray2 removeObjectAtIndex:1];
    
    //删除多个元素
    NSRange rg1 = {0,7};
    NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndexesInRange:rg1];
    
    [mutArray2 removeObjectsAtIndexes:indexSet];
    
    NSLog(@"mutArray2:%@",mutArray2);
    
    
    6.数组元素排序

    NSArray *array = @[@"agfd",
                       @"abc",
                       @"adf",
                       @"aaa",
                       @"csw",
                       @"swa"];
    
    NSArray *newArray = [array sortedArrayUsingSelector:@selector(compare:)];
    NSLog(@"newArray:%@",newArray);
    
时间: 2024-10-26 03:12:20

Foundation ----->NSArray的相关文章

Foundation の NSArray的常用方法

NSArray // 创建有指定参数的数组 NSArray *array = NSArray alloc] initWithObjects:@"One",@"Two",@"Three",@"Four",nil]; NSArray *array = @[@"One",@"Two",@"Three",@"Four"]; // 从一个数组拷贝数据到另一数

Foundation框架的基本对象之数组对象

在程序设计中数组的使用非常频繁,Foundation框架提供了NS数组类型,NS数组类型包括可修改的和不可修改两种,只能用来存放相关的对象类型,OC为我们提供了相关的基本的数组操作,并对相关的数组操作进行了封装. 数组的定义 我们可以简单的把数组看做是把同一类型的数据有序的进行排列,进行同一存储,即同种类型数据的集合. 数组的声明 数组声明和变量声明类似 格式:数组类型  数组名[数组大小]例如 :int score[5]; 数据类型  数组名[长度]=[数值1,数值2,……,数值n]. 例如:

[翻译] BFKit

BFKit BFKit is a collection of useful classes to develop Apps faster. BFKit是一个非常实用的开发套件,帮助你快速开发. Installing and Usage - 安装与使用 Copy the library folder (BFKit) to the project 复制library文件夹到项目当中 Add the AudioToolbox framework to the project 添加AudioToolbo

IOS命名规范(转载)

转载地址:http://www.cnblogs.com/qiqibo/archive/2012/09/05/2671553.html 正文: • 格式化代码 ? 指针“*”号的位置 ? 如:NSString *varName; ? 空格 VS tabs ? 只允许使用空格,将编辑器设置为1个TAB = 2个字符缩进 ? 每行的长度 ? 每行最多不得超过100个字符 ? 以15寸Macbook Pro的大小,每行100个字符时能最大化地同时容下编辑器和iPhone模拟器 ? Google的80字符

Object-C 新手教程

大纲 開始吧 下载这篇教学 设定环境 前言 编译 hello world 创建 Classes @interface @implementation 把它们凑在一起 具体说明... 多重參数 建构子(Constructors) 訪问权限 Class level access 异常情况(Exceptions)处理 继承.多型(Inheritance, Polymorphism)以及其它面向对象功能 id 型别 继承(Inheritance) 动态识别(Dynamic types) Categori

雏鸟(1)

一.Foundation.framework目录    1.    IOS目录      $1   /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/Foundation.framework    $2   /Applications/Xcode.app/Contents/Developer/

google objective-c coding style(4)COCOA 和 OBJECTIVE-C 特性

成员变量应该是 @private Tip 成员变量应该声明为 @private @interface MyClass : NSObject { @private id myInstanceVariable_; } // public accessors, setter takes ownership - (id)myInstanceVariable; - (void)setMyInstanceVariable:(id)theVar; @end 明确指定构造函数 Tip 注释并且明确指定你的类的构

ios--编码规范

文章转自:https://github.com/QianKaiLu/Objective-C-Coding-Guidelines-In-Chinese 正文: Objective-C-Coding-Guidelines-In-Chinese Objective-C编码规范,内容来自苹果.谷歌的文档翻译,自己的编码经验和对其它资料的总结. 转载请注明出处. 概要 Objective-C是一门面向对象的动态编程语言,主要用于编写iOS和Mac应用程序.关于Objective-C的编码规范,苹果和谷歌都

kvc和kvo的使用情况的了解

了解cocoa:Cocoa是苹果公司为Mac OS X所创建的原生面向对象的API,是Mac OS X上五大API之中的一个(其他四个是Carbon.POSIX.X11和Java). 苹果的面向对象开发框架,用来生成 Mac OS X 的应用程序.基本的开发语言为 Objective-c, 一个c 的超集. 即为:Coroa 基本面向原生的API抽象.是C的一个超级. 在Cocoa中是以被万物之源NSObject类实现的NSKeyValueCoding(键值编码)/(键值观察)NSKeyValu