/**
arrayByAddingObject
-- 往数组A添加一个数据,返回一个数组的形式,即必须有一个数组来接受
*/
NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3", nil];
array = [array arrayByAddingObject:@"4"];
NSLog(@"-----addarr=%@-----", array); //>>1,2,3,4 /**
arrayByAddingObjectsFromArray
-- 往数组A添加一组数组B,返回数组类型,需要一个数组来接受数据
*/
NSArray *addArr2 = [array arrayByAddingObjectsFromArray:array];
NSLog(@"-----addArr2=%@-----", addArr2); //>>>1,2,3,4,1,2,3,4 /**
componentsJoinedByString
-- 将数据A以 需要的分隔符分割开,组成一个字符串:例如数组A= [1,2,3];分隔符为^, 字符串为1^2^3
*/
NSString *arrayStr = [array componentsJoinedByString:@"^"];
NSLog(@"-----arrayStr=%@-----", arrayStr); //>>>1^2^3 /**
containsObject
-- 数组是否包含某个对象
*/
BOOL isContains = [array containsObject:@"5"];
NSLog(@"-----isContains=%d-----", isContains); //>>>NO /**
description
*/
NSString *arrDes = [array description];
NSLog(@"-----description=%@-----", arrDes); /**
indexOfObject
--判断 anObject 对象是否存在数组中如果存在返回,对象所在的下标;如果不存在,返回NSNotFund
*/
NSUInteger index = [addArr2 indexOfObject:@"5"];
NSLog(@"-----index=%ld-----", index); /**
indexOfObjectIdenticalTo: inRange:
-- 判断 anObject 对象是否存在数组中range范围内,如果存在,返回下标了;如果不存在,返回NSNotFund
*/
NSUInteger index2 = [addArr2 indexOfObject:@"3" inRange:NSMakeRange(1, 3)];
NSLog(@"-----index2 = %ld-----", index2); // 2 /**
objectEnumerator --正序遍历数组
reverseObjectEnumerator --反序遍历数组
*/
NSEnumerator *rator = [array objectEnumerator];
id obj = nil;
while (obj = [rator nextObject]) {
NSLog(@"----obj=-%@-----",obj);
} /**
isEqualToArray
-- 两个数组是否相等
*/
BOOL isSame = [addArr2 isEqualToArray:array];
NSLog(@"-----isSame = %d-----", isSame); /**
sortedArrayUsingSelector
-- 如果只是对字符串排序的话, 可以利用 字符串自带的compare:方法;也可以自己写compare:方法,进行对象的比较
*/ /**
subarrayWithRange
-- 截取数组 range的数组
*/
NSArray *subArray = [addArr2 subarrayWithRange:NSMakeRange(2, 4)];
NSLog(@"-----subArray=%@-----", subArray); /**
writeToFile: atomically:
-- 把数据写入本地
*/ /**
writeToURL: atomically:
--保存数组至一个URL
*/ /**
makeObjectsPerformSelector:(SEL)aSelector
-- 让每个数组都调用 aSelector 这个方法
*/ NSLog(@"-----addArr2=%@-----", addArr2); /**
objectAtIndexedSubscript:
-- 获取数组中 idx 索引的数据
*/
NSString *strIndex = [addArr2 objectAtIndexedSubscript:3];
NSLog(@"-----strIndex=%@-----", strIndex); //>>>4 /**
enumerateObjectsUsingBlock:
-- 这个方法也是一种循环的方法与for,while实现的功能一样;当stop = yes的时候,就停止循环
*/
[addArr2 enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
// NSLog(@"-----obj= %@ idx = %ld -----", obj, idx);
}]; /**
enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:
-- 这个方法也是一种循环的方法与for,while实现的功能一样;当stop = yes的时候,就停止循环
*/
//NSEnumerationReverse 倒序遍历
[array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"-----obj= %@ idx = %ld -----", obj, idx);
//当需要结束循环的时候,调用stop,赋予YES
// if (idx ==3) {
// *stop = YES;
// } }]; /**
enumerateObjectsAtIndexes:(NSIndexSet *)s options:
-- 在制定的数组范围 s 内 遍历数据
*/
[addArr2 enumerateObjectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(2, 4)] options:NSEnumerationReverse usingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"-----obj= %@ idx = %ld -----", obj, idx);
}]; /**
indexOfObjectPassingTest
-- 根据条件用来获取一个NSUIndex 对象,主要是根据条件进行数据遍历使用
*/
NSInteger testIndex = [array indexOfObjectPassingTest:^ BOOL (id tr,NSUInteger index, BOOL *te){
NSString *s = (NSString *)tr;
if([@"4" isEqualToString:s])
{
return YES;
}
return NO;
}]; NSLog(@"index==%ld=.",testIndex); //>>> 3 /**
sortedArrayUsingComparator:
-- 排序 , 这个方法本身就是按递增的方式排序。 NSOrderedAscending
-The left operand is smaller than the right operand.
NSOrderedSame
-The two operands are equal.
NSOrderedDescending
-The left operand is greater than the right operand */ NSArray *numberArray = @[@"3", @"4", @"9", @"1"]; //递增
NSArray *sortArray = [numberArray sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
if ([obj1 integerValue] > [obj2 integerValue]) {
return NSOrderedDescending;
}else {
return NSOrderedAscending;
}
}]; NSLog(@"-----sortArray=%@-----", sortArray); //>>>1 3 4 9 /**
sortedArrayWithOptions:(NSSortOptions)opts usingComparator
-- 与上个方法一致
*/

此外还提供了NAMutableArray的方法,这个方法常用,都知道意思,只列举方法:

@interface NSMutableArray<ObjectType> : NSArray<ObjectType>

- (void)addObject:(ObjectType)anObject;  --往数组添加数据
- (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index; --往数组的第index下标插入一个anobject数据
- (void)removeLastObject; -- 移除数组的最后一个数据
- (void)removeObjectAtIndex:(NSUInteger)index; --移除数组中第index个数据
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(ObjectType)anObject; --用 anobject 替换 数组 中 第index个数据
- (instancetype)init NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithCapacity:(NSUInteger)numItems NS_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER; @end @interface NSMutableArray<ObjectType> (NSExtendedMutableArray) - (void)addObjectsFromArray:(NSArray<ObjectType> *)otherArray;
- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;
- (void)removeAllObjects;
- (void)removeObject:(ObjectType)anObject inRange:(NSRange)range;
- (void)removeObject:(ObjectType)anObject;
- (void)removeObjectIdenticalTo:(ObjectType)anObject inRange:(NSRange)range;
- (void)removeObjectIdenticalTo:(ObjectType)anObject;
- (void)removeObjectsFromIndices:(NSUInteger *)indices numIndices:(NSUInteger)cnt NS_DEPRECATED(10_0, 10_6, 2_0, 4_0);
- (void)removeObjectsInArray:(NSArray<ObjectType> *)otherArray;
- (void)removeObjectsInRange:(NSRange)range;
- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray<ObjectType> *)otherArray range:(NSRange)otherRange;
- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray<ObjectType> *)otherArray;
- (void)setArray:(NSArray<ObjectType> *)otherArray;
- (void)sortUsingFunction:(NSInteger (NS_NOESCAPE *)(ObjectType, ObjectType, void * _Nullable))compare context:(nullable void *)context;
- (void)sortUsingSelector:(SEL)comparator; - (void)insertObjects:(NSArray<ObjectType> *)objects atIndexes:(NSIndexSet *)indexes;
- (void)removeObjectsAtIndexes:(NSIndexSet *)indexes;
- (void)replaceObjectsAtIndexes:(NSIndexSet *)indexes withObjects:(NSArray<ObjectType> *)objects; - (void)setObject:(ObjectType)obj atIndexedSubscript:(NSUInteger)idx NS_AVAILABLE(10_8, 6_0); - (void)sortUsingComparator:(NSComparator NS_NOESCAPE)cmptr NS_AVAILABLE(10_6, 4_0);
- (void)sortWithOptions:(NSSortOptions)opts usingComparator:(NSComparator NS_NOESCAPE)cmptr NS_AVAILABLE(10_6, 4_0); @end @interface NSMutableArray<ObjectType> (NSMutableArrayCreation) + (instancetype)arrayWithCapacity:(NSUInteger)numItems; + (nullable NSMutableArray<ObjectType> *)arrayWithContentsOfFile:(NSString *)path;
+ (nullable NSMutableArray<ObjectType> *)arrayWithContentsOfURL:(NSURL *)url;
- (nullable NSMutableArray<ObjectType> *)initWithContentsOfFile:(NSString *)path;
- (nullable NSMutableArray<ObjectType> *)initWithContentsOfURL:(NSURL *)url;

OC温习四:数组的更多相关文章

  1. iOS开发-OC语言 (四)数组

    知识点 1.NSArray 2.NSMutableArray 1.数组的基本用法: 2.数组的遍历 3.数组排序 ===========   NSArray  不可变数组  ============= ...

  2. Oc中的数组

    ========================== 数组 ========================== 一.认识数组 oc中可以把NSObject对象的子类放到数组这个集合中,但是int.f ...

  3. OC基础 可变数组与不可变数组的使用

    OC基础 可变数组与不可变数组的使用 1.不可变数组 1.1不可变数组的创建 //实例方法 NSArray *array = [[NSArray alloc] initWithObjects:&quo ...

  4. OC第四课

    主要内容:NSString.NSArray.NSNumber 一.苹果公司的帮助文档(API) 学会查看API对于后续的编程有很好的帮助 进入方法: Xcode ->Help -> Doc ...

  5. JS学习笔记 (四) 数组进阶

    1.基本知识 1.数组是值的有序集合.每个值叫做一个元素,而每个元素在数组中的位置称为索引,以数字表示,以0开始. 2.数组是无类型的.数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的 ...

  6. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  7. OC第四节——NSDictionary和NSMutableDictionary

    NSDictionary    1.什么是字典        字典是也是一种集合结构,功能与我们现实中的字典工具一样    2.字典的元素是什么        任意类型的对象地址构成键值对    3. ...

  8. oc 中四种实例变量的范围类型@private@protected@public@package

    To enforce the ability of an object to hide its data, the compiler limits the scope of instance vari ...

  9. oc随笔四:NSString、NSNumber

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

随机推荐

  1. 新建cordova应用,插件开发教程系列(总目录)

    以下几篇是连续的教程,代码也是连续的,包括如下章节: 新建cordova应用 https://www.cnblogs.com/cannel/p/11074359.html 使用cordova把h5应用 ...

  2. android xml中使用include标签

    在一个项目中,我们可能会在xml中局部用到相同的布局,如果每次都在xml中重写这些布局,代码显得很冗余.重复的复制黏贴也很烦恼,所以,我们把这些相同的局部布局写成一个单独的xml模块,需要用到这些布局 ...

  3. 浅析 innerHTML 性能优化的原理

    浅析 innerHTML 性能优化的原理 博客分类: web前端 IEAndroidwebkit浏览器UI  昨天看了 lveyo老兄的"innerHTML的性能问题" 一文 ht ...

  4. sql server 2000备份还原数据库

    转载请注明出处:http://blog.csdn.net/neochan1108/article/details/79248017 备份: -- Create the backup device fo ...

  5. 洛谷 P2153 [SDOI2009]晨跑

    题目描述 Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十字路口和M条街 ...

  6. Linux OpenGL 实践篇-10-framebuffer

    在之前的实践中我们都是在当前的窗口中渲染,即使用的缓存都是由glutCreateWindow时创建的缓存,我们可称之为默认缓存.它是唯一一个可以被图形服务器的显示系统识别的帧缓存,我们在屏幕上看到的只 ...

  7. python的特殊数字类型(无穷大、无穷小等)

    float('inf') 表示正无穷 -float('inf') 或 float('-inf') 表示负无穷 其中,inf 均可以写成 Inf 起步python中整型不用担心溢出,因为python理论 ...

  8. Java中wait()方法为什么要放在同步块中?(lost wake-up 问题)

    问题起源 事情得从一个多线程编程里面臭名昭著的问题"Lost wake-up problem"说起. 这个问题并不是说只在Java语言中会出现,而是会在所有的多线程环境下出现. 假 ...

  9. [SQL]连续三天有销售额

    店铺 销售日期 销售额 A 2017-10-11 300 A 2017-10-12 200 B 2017-10-11 400 B 2017-10-12 200 A 2017-10-13 100 A 2 ...

  10. Can't connect to MySQL server on '127.0.0.1' (10061)

    一条命令解决 mysqld --initialize-insecure --user=mysql 但这只是简单解决问题,详细查看百度经验,知乎上的讨论 forget root password ref ...