注意:
1.因为数组和字典中存放的只能是对象类型. 所以一般的数值是不能直接存入的, 只能转化成对象元素才能存入!
2.
NSArray 用于对象有序集合
NSSet 用于对象无序集合
NSDictionary 用于键值映射
3.数组中所有元素不能是基本数据类型,否则会编译报错,如果有需要封装成NSNumber类或NSValue类。
4.数组在NSLog中可以作为对象直接输出,此时建议重写NSObject的-(NSString *)description方法.
5.数组中可以存储自定义类的对象,此时建议重写NSObject的-(BOOL)isEqual:(id)object方法
一、NSArray
1.功能
NSArray* array = [NSArray arrayWithObjects: @"abcde", @"fghij" , @"klmno", @"pqrst" , @"uvwxy" , nil]; NSLog(@"第一个元素:%@" , [array objectAtIndex:0]); NSLog(@"索引为1的元素:%@" , [array objectAtIndex:1]); NSLog(@"最后一个元素:%@" , [array lastObject]); // 1.获取索引从2~5的元素组成的新集合 NSArray* arr1 = [array objectsAtIndexes: [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(2, 3)]]; NSLog(@"%@" , arr1); // 2.获取元素在集合中的位置 NSLog(@"klmno的位置为:%ld" , [array indexOfObject:@"klmno"]); // 3.获取元素在集合的指定范围中的位置 NSLog(@"在2~5范围pqrst的位置为:%ld" , [array indexOfObject:@"pqrst" inRange:NSMakeRange(2, 3)]); // ① // 4.向数组的最后追加一个元素。 // 原NSArray本身并没有改变,只是将新返回的NSArray赋给array array = [array arrayByAddingObject:@"zzzzz"]; // 5.向array数组的最后追加另一个数组的所有元素。 // 原NSArray本身并没有改变,只是将新返回的NSArray赋给array array = [array arrayByAddingObjectsFromArray: [NSArray arrayWithObjects:@"aaaaa" , @"bbbbb" , nil]]; for (int i = 0 ; i < array.count; i++) { //NSLog(@"%@" , [array objectAtIndex:i]); // 上面代码也可简写为如下代码 NSLog(@"%@" , array[i]); } // 6.获取array数组中索引为5~8处的所有元素 NSArray* arr2 = [array subarrayWithRange: NSMakeRange(5, 3)]; // 7.将NSArray集合的元素写入文件 [arr2 writeToFile:@"myFile.txt" atomically:YES];
2.for in 快速枚举
// 读取前面写入磁盘的文件,用文件内容来初始化NSArray集合 NSArray* array = [NSArray arrayWithContentsOfFile:@"myFile.txt"]; for(id object in array) { NSLog(@"%@" , object); }
二、NSMutableArray
// 定义一个函数,该函数用于把NSArray集合转换为字符串 NSString* NSCollectionToString(NSArray* array) { NSMutableString* result = [NSMutableString stringWithString:@"["]; for(id obj in array) { [result appendString:[obj description]]; [result appendString:@", "]; } // 获取字符串长度 NSUInteger len = [result length]; // 去掉字符串最后的两个字符 [result deleteCharactersInRange:NSMakeRange(len - 2, 2)]; [result appendString:@"]"]; return result; } int main(int argc , char * argv[]) { @autoreleasepool{ // 读取前面写入磁盘的文件,用文件内容来初始化NSMutableArray集合 NSMutableArray* array = [NSMutableArray arrayWithContentsOfFile:@"myFile.txt"]; // 向集合最后添加一个元素 [array addObject:@"abc"]; NSLog(@"最后追加一个元素后:%@" , NSCollectionToString(array)); // 使用NSArray向集合尾部添加多个元素 [array addObjectsFromArray: [NSArray arrayWithObjects:@"张飞" , @"关羽",nil]]; NSLog(@"最后追加两个元素后:%@" , NSCollectionToString(array)); // 向集合的指定位置插入一个元素 [array insertObject:@"bcd" atIndex:2]; NSLog(@"在索引为2处插入一个元素后:%@" , NSCollectionToString(array)); // 使用NSArray向集合指定位置插入多个元素 [array insertObjects: [NSArray arrayWithObjects:@"武松" , @"林冲",nil] atIndexes:[NSIndexSet indexSetWithIndexesInRange :NSMakeRange(3,2)]]; NSLog(@"插入多个元素后:%@" , NSCollectionToString(array)); // 删除集合最后一个元素 [array removeLastObject]; NSLog(@"删除最后一个元素后:%@" , NSCollectionToString(array)); // 删除集合中指定索引处的元素 [array removeObjectAtIndex:5]; NSLog(@"删除索引为5处的元素后:%@" , NSCollectionToString(array)); // 删除2~5处元素 [array removeObjectsInRange:NSMakeRange(2, 3)]; NSLog(@"删除索引为2~5处的元素后:%@" , NSCollectionToString(array)); // 替换索引为2处的元素 [array replaceObjectAtIndex:2 withObject:@"fgh"]; NSLog(@"替换索引为2处的元素后:%@" , NSCollectionToString(array)); }
时间: 2024-10-10 07:33:45