// 创建一个不可变数组,元素为一个OC字符串对象 @"小桥" NSArray *array1 = [NSArray arrayWithObject:@"小桥"]; // 创建一个不可变数组,元素为多个OC字符串对象 NSArray *array2 = [NSArray arrayWithObjects:@"葬花 桥", @"120岁", @"来自武汉" , nil]; // 快速创建一个不可变数组 NSArray *array3 = @[@"葬花 桥", @"120岁", @"来自武汉"]; // 这是Xcode的一个特性,它会把这句自动转换成上面那句
// 输出array3的元素个数 NSLog(@"数组元素个数=%ld", array3.count);array3.count 调用数组的count方法就会返回元素的个数。
// 访问数组元素 NSLog(@"第%d个元素为%@", 0, [array3 objectAtIndex:0]);
NSLog(@"第%d个元素为%@", 1 , array3[1]);
简化的写法依然是编译器自动替换成上一个写法,所以虽然写法一样但本质不同。// 1.传统遍历方法 for (int i=0; i<array3.count; i++) { NSLog(@"第%d个元素---%@", i, array3[i]); }
// 2.OC遍历 unsigned long i = 0; // 记住当前下标 for (NSString *obj in array3) // array3中的对象全部是OC字符串,如果不是同一种类型就用 id { i = [array3 indexOfObject:obj]; // 获取当前元素的下标 NSLog(@"第%ld个元素---%@", i, obj); }
// 3.block遍历,调用enumerateObjectsUsingBlock: 方法,传递一个block参数 [array3 enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop) // 这些参数由方法enumerateObjectsUsingBlock传递过来 { NSLog(@"第%ld个元素----%@", idx, obj); // 对数组元素的操作在block中进行 }];
// 子类有父类的方法 NSMutableArray *array4 = [NSMutableArray arrayWithObjects:@"葬花", @"桥" , nil]; // 添加元素 [array4 addObject:@"今天天气又不好"];
添加元素后数组中就多了一个元素
删除元素 :
// 删除元素全部元素 [array4 removeAllObjects]; // 删除指定元素 [array4 removeObject:@"桥"];
这只是两个,还有很多,小桥就不一一列举了。
以上就是OC数组的内容,小桥把用到的全部代码拷贝上来:
// // main.m // OC数组 // // Created by 葬花 桥 on 14-5-18. // Copyright (c) 2014年 itcast. All rights reserved. // #import <Foundation/Foundation.h> int main() { /*--------------------------------------------------------------- 数组的创建 ---------------------------------------------------------------*/ // 创建一个不可变数组,元素为一个OC字符串对象 @"小桥" NSArray *array1 = [NSArray arrayWithObject:@"小桥"]; // 创建一个不可变数组,元素为多个OC字符串对象 NSArray *array2 = [NSArray arrayWithObjects:@"葬花 桥", @"120岁", @"来自武汉" , nil]; // 快速创建一个不可变数组 NSArray *array3 = @[@"葬花 桥", @"120岁", @"来自武汉"]; // 这是Xcode的一个特性,它会把这句自动转换成上面那句 // 输出array3的元素个数 // NSLog(@"数组元素个数=%ld", array3.count); // 访问数组元素 // NSLog(@"第%d个元素为%@", 0, [array3 objectAtIndex:0]); // NSLog(@"第%d个元素为%@", 1 , array3[1]); /*--------------------------------------------------------------- 数组的遍历 ---------------------------------------------------------------*/ // 1.传统遍历方法 for (int i=0; i<array3.count; i++) { // NSLog(@"第%d个元素---%@", i, array3[i]); } // 2.OC遍历 unsigned long i = 0; // 记住当前下标 for (NSString *obj in array3) // array3中的对象全部是OC字符串,如果不是同一种类型就用 id { i = [array3 indexOfObject:obj]; // 获取当前元素的下标 //NSLog(@"第%ld个元素---%@", i, obj); } // 3.block遍历,调用enumerateObjectsUsingBlock: 方法,传递一个block参数 [array3 enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop) // 这些参数由方法enumerateObjectsUsingBlock传递过来 { // NSLog(@"第%ld个元素----%@", idx, obj); // 对数组元素的操作在block中进行 if (idx == 1) { *stop = YES; // 当当前索引为 1 时停止遍历 } }]; /*--------------------------------------------------------------- 可变数组的创建和使用 ---------------------------------------------------------------*/ // 子类有父类的方法 NSMutableArray *array4 = [NSMutableArray arrayWithObjects:@"葬花", @"桥" , nil]; // 添加元素 [array4 addObject:@"今天天气又不好"]; // 删除元素全部元素 [array4 removeAllObjects]; // 删除指定元素 [array4 removeObject:@"桥"]; for (id obj in array4) { NSLog(@"array4---%@", obj); } return 0; }二、NSSet
// 创建单个键值对字典 NSDictionary *dic = [NSDictionary dictionaryWithObject:@"葬花" forKey:@"姓"]; // 创建多个键值对的字典 NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys: @"葬花", @"姓", @"桥", @"名", @"44125", @"QQ", nil]; // 快速创建字典 NSDictionary *dic3 = @{@"姓" : @"葬花"};dic中存放着一个键值对,@"姓" 和 @"葬花" 。通过key索引就能找到对应的值:
id obj = [dic objectForKey:@"姓"]; // 快速查找值 id obj3 = dic3[@"姓"];2?可变字典
// 创建一个空的字典 NSMutableDictionary *dic4 = [NSMutableDictionary dictionary]; // 添加键值对 [dic4 setObject:@"桥" forKey:@"名字"]; [dic4 setObject:@"120岁" forKey:@"年龄"]; [dic4 setObject:@"武汉" forKey:@"地址"]; [dic4 setObject:@"44125" forKey:@"QQ"];删除键值对
// 删除键值对 [dic4 removeObjectForKey:@"年龄"];
// 字典的遍历 NSArray *keys = [dic4 allKeys]; // 找出所有key for (int i=0; i<dic4.count; i++) { NSString *key4 = keys[i]; NSString *obj4 = dic4[key4]; // 找出key对应的value NSLog(@"%@ = %@", key4, obj4); } // block遍历 [dic4 enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) { NSLog(@"%@ = %@", key, obj); }];
// 数组中的元素为字典,每个字典为一个人的信息 NSArray *array = @[ @{@"姓名" : @"葬花 桥", @"年龄" : @"120岁", @"QQ" : @"44125"}, @{@"姓名" : @"SouBanaQiao", @"年龄" : @"20岁", @"QQ" : @"123456"}, @{@"姓名" : @"一休", @"年龄" : @"13岁", @"QQ" : @"4568651"}]; // 访问数组中的字典元素中的键值对 NSString *str = array[0][@"QQ"]; // 取出数组中的第0个字典元素,再取出字典key对应的value NSLog(@"%@", str);
// 数组中的元素为字典,每个字典为一个人的信息,元素0中的字典中的QQ有两个 NSArray *array2 = @[ @{@"姓名" : @"葬花 桥", @"年龄" : @"120岁", @"QQ" : @[@"44125", @"1234"]}, @{@"姓名" : @"SouBanaQiao", @"年龄" : @"20岁", @"QQ" : @"123456"}, @{@"姓名" : @"一休", @"年龄" : @"13岁", @"QQ" : @"4568651"}]; // 访问数组中的字典元素中的键值对 NSString *str2 = array2[0][@"QQ"][1]; NSLog(@"%@", str2);
// // main.m // NSDictionary // // Created by 葬花 桥 on 14-5-18. // Copyright (c) 2014年 itcast. All rights reserved. // #import <Foundation/Foundation.h> int main() { /*--------------------------------------------------------------- 字典的创建和使用 ---------------------------------------------------------------*/ // 创建单个键值对字典 NSDictionary *dic = [NSDictionary dictionaryWithObject:@"葬花" forKey:@"姓"]; // 通过索引找到值 id obj = [dic objectForKey:@"姓"]; // 创建多个键值对的字典 NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys: @"葬花", @"姓", @"桥", @"名", @"44125", @"QQ", nil]; // 快速创建字典 NSDictionary *dic3 = @{@"姓" : @"葬花"}; // 快速查找值 id obj3 = dic3[@"姓"]; // NSLog(@"%@", obj3); /*--------------------------------------------------------------- 可变字典的创建和使用 ---------------------------------------------------------------*/ // 创建一个空的字典 NSMutableDictionary *dic4 = [NSMutableDictionary dictionary]; // 添加键值对 [dic4 setObject:@"桥" forKey:@"名字"]; [dic4 setObject:@"120岁" forKey:@"年龄"]; [dic4 setObject:@"武汉" forKey:@"地址"]; [dic4 setObject:@"44125" forKey:@"QQ"]; // 删除键值对 [dic4 removeObjectForKey:@"年龄"]; // 字典的遍历 NSArray *keys = [dic4 allKeys]; // 找出所有key for (int i=0; i<dic4.count; i++) { NSString *key4 = keys[i]; NSString *obj4 = dic4[key4]; // 找出key对应的value // NSLog(@"%@ = %@", key4, obj4); } // block遍历 [dic4 enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) { // NSLog(@"%@ = %@", key, obj); }]; /*--------------------------------------------------------------- 字典与数组的嵌套 ---------------------------------------------------------------*/ // 数组中的元素为字典,每个字典为一个人的信息 NSArray *array = @[ @{@"姓名" : @"葬花 桥", @"年龄" : @"120岁", @"QQ" : @"44125"}, @{@"姓名" : @"SouBanaQiao", @"年龄" : @"20岁", @"QQ" : @"123456"}, @{@"姓名" : @"一休", @"年龄" : @"13岁", @"QQ" : @"4568651"}]; // 访问数组中的字典元素中的键值对 NSString *str = array[0][@"QQ"]; // 取出数组中的第0个字典元素,再取出字典key对应的value // NSLog(@"%@", str); // 数组中的元素为字典,每个字典为一个人的信息,元素0中的字典中的QQ有两个 NSArray *array2 = @[ @{@"姓名" : @"葬花 桥", @"年龄" : @"120岁", @"QQ" : @[@"44125", @"1234"]}, @{@"姓名" : @"SouBanaQiao", @"年龄" : @"20岁", @"QQ" : @"123456"}, @{@"姓名" : @"一休", @"年龄" : @"13岁", @"QQ" : @"4568651"}]; // 访问数组中的字典元素中的键值对 NSString *str2 = array2[0][@"QQ"][1]; NSLog(@"%@", str2); return 0; }---------------------- IOS开发、Android培训、期待与您交流! ---------------------- 详细请查看:www.itheima.com
黑马程序员-OC学习笔记之Foundatio框架集合类,布布扣,bubuko.com
原文地址:http://blog.csdn.net/wangqinqian/article/details/26141417