标签:
注意:
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));
}
标签:
原文地址:http://www.cnblogs.com/lsa0913/p/5724555.html