字符串之后学习的是数组——NSArray 数组的学习思路和字符串是相似的,先要创建,创建之后就是函数的使用。数组的元素可以是任何对象,但数组中装有的元素不是对象而是地址。...打印数组就是打印数组的每个元素,实际就是description方法的返回值。我们都对description方法进行了重写。在数组中有一个新鲜的知识点,那就是遍历,对数组进行遍历。...count]; NSInteger i; for(i = 0; i < length; i ++) { NSLog(@"%@", [array objectAtIndex:i]); } 与字符串一样,数组也分可变数组和不可变数组...,不可变数组即NSMutableArray。...数组中的方法就不再举例了,网上的常用方法到处都是。 最后总结一些字典。 看到字典相等一般人回首先想到我们平时生活、学习中用到的字典有汉语字典有英语字典。
Theocoacao有篇不错的介绍NSArray和KVC的文章,我给粗略翻译了一下。 NSArray的-valueForKey: 有一个不是很显著的特性....你可以使用它返回一个由tree对象包装的值对象的数组。这句话可能不是很容易理解,看下面的例子就清楚了。...NSArray * justValues; justValues = [tree valueForKeyPath: @"storage.someKey"]; NSLog (@"%@", justValues...,这个数组是由封装它的tree对象的 @”storage.someKey”:这个keypath提供的: NSArray * justValues; justValues = [tree valueForKeyPath...你可以用一个attribute就把它里面数组的值列出来。. ----
Objective-C遍历数组的方法有很多,各种遍历方法效率不尽相同,系统内部会进行不同的优化 大家可以根据自己的实际需求选择合适的方法 #import #import //遍历数组的3种方法,删除数组元素,添加数组元素 void foreach() {...,@"222",@"333",@"444",nil]; [marray addObject:@"555"];//添加对象 //1.遍历方法一,使用普通循环,借助数组的个数...marrayobjectAtIndex:i]); } //2.遍历方法,此方法系统进行了优化,效率最高 id obj;用一个obj对象来接受数组中的每一个元素...for (arr in marray) { NSLog(@"%@ ",arr);//这个语句会执行 [marray count]次,把每个数组元素取出来
通过forin循环来遍历 好处:在搜索一个一个元素时NSSet比NSArray效率高,主要是它用到了一个算法hash 。...应用场景: 比如重用Cell的时候,从缓存池中随便获取一个就可以了,无需按照指定顺序来获取 当需要把数据存放到一个集合中,然后判断集合中是否有某个对象的时候 NSArray ●NSArray是有序集合
NSComparisonResult)compare:(Person*)otherObject {return[self.birthDate compare:otherObject.birthDate];}NSArray...initWithKey:@"birthDate" ascending:YES] autorelease];NSArray...*sortDescriptors =[NSArray arrayWithObject:sortDescriptor];NSArray*sortedArray; sortedArray =[drinkDetails...There's also the possibility of sorting with a block since Mac OS X 10.6 and iOS 4: NSArray*sortedArray
NSArray基本用法 //初始化 NSArray *array = [NSArray arrayWithObjects:@"A",@"B",@"C",@"D",@"E",@"F", nil...]; NSArray *array1 = @[@"a",@"b",@"c",@"d"]; //获取数组元素个数 NSLog(@"%lu",(unsigned long...)array.count);//6 //获取数组最后一个元素 NSLog(@"%@",[array lastObject]);//F //获取数组第一个元素 NSLog(...:@"C"]);// 2 //获取数组中索引为2的对象 NSLog(@"%@",[array objectAtIndex:2]);//C NSArray遍历 for (int...排序 NSArray *arr = @[@"90",@"20",@"30",@"10",@"50",]; //数组中的元素不可以是自定义的 NSArray *arr1 = [arr
bools)] if (bools){ //发送post请求成功 //dataArr 赋值操作有两种不同的操作 这里我写一个老三步 (让子弹飞快申遗) NSArray...*listArr = [NSArray arrayWithArray:dicData[@"结构"][@"需要"][@"和后端"][@"打架(商量)"]]; if (!..._dataArr){ //如果数组是空 _dataArr = [NSMutableArray array]; } return _dataArr; //你以为完了吗?
是什么(类型) 可变吗 能存啥 NSArray 引用类型,不同指针变量指向同一块内存,对一个变量操作时,会自动映射到另一个变量。...创建后,不可变 单个数组对象,可存 OC 语言环境下的多种对象数据类型,eg:@[@1, "2", 对象] Array 值类型,每个变量有自己的数据拷贝。对一个变量的操作不会影响其他变量。
NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合; NSSet , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的,不像NSArray...,NSDictionary(都是有序的集合)类声明编程接口对象是有序集合,在内存中存储位置是连续的; NSSet和我们常用NSArry区别是:在搜索一个一个元素时NSSet比NSArray...而对于NSArray,若想知道A到底在不在数组中,则需要便利整个数组,显然效率较低了; NSSet,NSArray都是类,只能添加cocoa对象,如果需要加入基本数据类型(int,float
Objective-C中NSArray类的解读 NSArray数组类是Objective-C语言中常用的也是重要的一个类,除了开发中常用到的一些基础功能,NSArray及其相关类中还封装了许多更加强大的功能...NSArray中属性与方法: //获取数组中元素个数 @property (readonly) NSUInteger count; //通过下标获数组中的元素 - (ObjectType)objectAtIndex...:(NSUInteger)index; //初始化方法 - (instancetype)init; //通过C语言风格的数组创建NSArray对象 需要注意,C数组中需要为Objective对象,cnt...; //像数组中追加一个元素 这个方法会返回一个新的数组 - (NSArray *)arrayByAddingObject:(ObjectType)anObject; //像数组中追加一组元素...这个方法会返回一个新的数组 - (NSArray *)arrayByAddingObjectsFromArray:(NSArray *)otherArray
前言 NSArray 获取指定 元素 的位置 或者 判断是否存在指定的 元素 的时间复杂度是 O(n)(包含特定元素时,平均耗时是 O(n/2),如果不包含特定元素,耗时是 O(n))。...官方文档明确指出 NSArray 从第 0 位开始依次判断是否相等,所以判断次数是 n (n 等于数组长度) ? image ?...php 中的数组 首先,我们先对 php 的数组进行一些了解 在 php 中,数组提供了一种特殊的用法:关联键的数组。...image 通过类似的思想,我们同样可以 将普通的 NSArray 转换为 NSDictionary 将普通的 NSArray 转换为 NSDictionary 下面,我们按照以下规则设计两个转换方法...+ (NSDictionary *)arr2Dic:(NSArray *)arr { // 注意,如果数组可能存在相同的元素,请将 `NSValue` 切换到自定义类型
例如NSArray与其可变版本NSMutableArray。这样看来实际上有两个抽象基类,一个用于不可变数组,一个用于可变数组。尽管具备公共接口的类有两个,但任然可以合起来算一个类族。...不可变的类定义了对所有数组都通用的方法,而可变类则定义了那些只适用于可变数组的方法。...两个类共同属于同一个类族,这意味着二者在实现各自类型的数组时可以共用实现代码,此外还能把可变数组复制成不可变数组,反之亦然。...在使用NSArray的alloc方法来获取实例的时候,该方法会首先分配一个属于某类的实例,此实例充当“占位数组”(placeholder array)。...该数组稍后会转为另一个类的实例,而那个类则是NSArray的实体子类。这个过程稍显复杂,其完整的解释已超出本书的范围。
---- NSArray类简介 有序且只可以存储Objective-C对象的数组 初始化后,内容不可变,长度也不可变,不能进行增、删、改操作 不能存放nil (nil是标志数组的结束)...:(NSArray *)otherArray //返回消息接收者与otherArray第一个相同的元素 ---- 添加新元素到数组(间接添加,返回一个新数组) - (NSArray...otherArray共同组成的新数组(otherArray加到新数组的末尾) ---- 数组元素的排序 - (NSArray *)sortedArrayUsingSelector...//1.1 //返回空的数组对象 NSArray *arry1_1 = [NSArray array]; NSLog(@"arry1_1 --> %@"...数组!" 元素的数组 NSArray *arry1_2 = [NSArray arrayWithObject:@"你好!数组!"]
NSArray NSArray作为一个存储对象的有序集合,可能是被使用最多的集合类。 性能特征 在数组的开头和结尾插入/删除元素通常是一个O(1)操作,而随机的插入/删除通常是 O(N)的。...有用的方法 NSArray的大多数方法使用isEqual:来检查对象间的关系(例如containsObject:)。
NSStringFromClass([cp1 class])); NSLog(@"cp2 %p, class %@", cp2, NSStringFromClass([cp2 class])); NSArray
NSArray介绍 NSArray是OC中的数组类,开发中建议尽量使用NSArray替代C语言中的数组 C语言中虽然也有数组,但在开发的过程中存在一些弊端 int array[4] = {10, 89...只能存放任意OC对象, 并且是有顺序的 不能存储非OC对象, 比如int\float\double\char\enum\struct等 NSArray中不能存储nil,因为NSArray认为nil是数组的结束...NSArray的常用方法 // 先定义一个数组,用于举例说明下面各个常用方法如何使用 NSArray *arr = [NSArray arrayWithObjects:@"abc",@"edf",@"hij...NSArray的简写形式 自从2012年开始,Xcode的编译器多了很多自动生成代码的功能,使得OC代码更加精简 之前数组的创建方式 [NSArray arrayWithObjects:@"Jack",...NSArray排序 1.NSArray排序 Foundation自带类排序 使用compare方法对数组中的元素进行排序, 那么数组中的元素必须是Foundation框架中的对象, 也就是说不能是自定义对象
判断数组中是否包含某个元素 - (BOOL)containsObject:(ObjectType)anObject; 数组快速去重 NSArray *tmpArray=@[@"one", @"two",...数组快速倒序 NSArray *tmpArray = @[@"one", @"two", @"three"]; tmpArray = tmpArray.reverseObjectEnumerator.allObjects...- (NSEnumerator *)reverseObjectEnumerator; 获取数组中的子数组 -(NSArray *)subarrayWithRange:(NSRange)range;...NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"test", nil]; 如: NSArray *test =...)useAuxiliaryFile; 根据indexes 获取一个数组 -(NSArray *)objectsAtIndexes:(NSIndexSet *)indexes;, NSIndexSet 是一个用来管理
引言 利用KVC的 valueForKeyPath API、谓词的NSPredicate、数组的sortedArrayUsingComparator:API进行实现。...*keys = [dict allKeys]; //按字母顺序排序 NSArray *sortedArray = [keys sortedArrayUsingComparator...2.1 对象数组按照日期重新分组 使用谓词进行数据分组 (数组元素为 自定义类型) iOS NSPredicate的应用指南之【从数组搜索特定条件的元素】(从数组中筛选type=8的电子签名数据,避免遍历数组...@distinctUnionOfObjects:返回指定属性去重后的值的数组 @unionOfObjects:返回指定属性的值的数组,不去重 属性的值不能为空,否则产生异常...+(NSString*)POInamebyArr:(NSArray*)arr{ // 返回距离目标地址最近的POI:对元素根据distance属性进行排序,返回第一个(distance
集合和数组的相同点:都是存储不同元素的地址,不同点:NSSet中的元素都是被自动过滤之后的不会重复的元素,NSArray中的元素却是允许重复的;NSSet是一个无顺序的集合,NSArray是一个有顺序的集合...,也就是数组转换为集合 NSArray *array1 = [[NSArray alloc] initWithObjects:@“1”,@“2”,@“3”,@“4”, nil]; NSSet *set...= [[NSSet alloc] initWithArray:array1]; 8、集合转换为数组 NSArray *array2 = [set allObjects]; (二)NSMutableSet...NSArray *array3 = [[NSArray alloc] initWithObjects:@“1”,@“2”,@“3”,@“4”,@“5”,@“6”, nil]; NSArray *array4...,然后根据数组元素进行去重,最后再进行存储 [sSet addObject:@{@"Temp":temp, @"Time":time}]; NSArray *aa = [sSet allObjects
在Objective-C中的集合类中主要包括不可变的数组--NSArray, 可变的数组--NSMutableArray, 不可变的字典--NSDictionary, 可变的字典--NSMutableDictionary...一、数组 1.不可变的数组 NSArray 数组是有序对象的集合,用来存储对象的有序列表,在OC中数组中必须存的是对象,不能是基本数据类型,若想存入基本数据类型...NSArray也是OC中的一个对象,使用NSArray也需要进行实例化,前面的博客在类的初始化中提到了便利初始化函数和便利构造器,在NSArray中也少不了这两样东西我们可以通过NSArray的便利初始化函数或者便利构造器进行...NSArray *array1 = [[NSArray alloc] initWithObjects:@"aaa", @"bbb", @"ccc", nil]; //NSArray的便利构造器 NSArray...*array2 = [NSArray arrayWithObjects:@"111", @"222", @"333", nil]; (2)获取数组元素的个数和数组的元素
领取专属 10元无门槛券
手把手带您无忧上云