黑马程序员——Foundation框架:字符串之集合类
2015-04-27 23:21
477 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、NSArray
总结:NSArray定义的是一个不可变的数组,而NSMutableArray定义的是一个可以改变的数组。数组中可以存放任何的oc对象,但是基本数据类型不能放到数组中。
二.NSSet
总结: NSSet和NSArray的对比:
1> 共同点
* 都是集合,都能存放多个OC对象
* 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)
* 本身都不可变,都有一个可变的子类
2> 不同点
* NSArray有顺序,NSSet没有顺序
三、NSDictionary/NSDMutableDictionary
总结:在NSDictionary中存储的都是键值对。对应关系为:索引->文字内容, key->value。
四、NSData
总结:Foundation框架中的字符串主要包含NSString,集合类(NSArray,NSSet,NSDictionary,NSDate,NSObject)。
一、NSArray
#import <Foundation/Foundation.h> #import "Person.h" /* NSArray :不可变数组 NSMutableArray : 可变数组 */ int main() { // @[] 只创建不可变数组NSArray /* 错误写法 NSMutableArray *array = @[@"jack", @"rose"]; [array addObject:@"jim"]; */ //NSArray *array = @[@"jack", @"rose"]; return 0; } // 可变数组的基本使用 void use3() { NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil]; // 添加元素 [array addObject:[[Person alloc] init]]; [array addObject:@"jack"]; // 删除元素 //[array removeAllObjects]; // 删除指定的对象 // [array removeObject:@"jack"]; [array removeObjectAtIndex:0]; // 错误写法 // [array addObject:nil]; NSLog(@"%@", array); NSLog(@"%ld", array.count); } // 遍历数组 void use2() { Person *p = [[Person alloc] init]; NSArray *array = @[p, @"rose", @"jack"]; // for (int i = 0; i<array.count; i++) // { // NSLog(@"%@", array[i]); // } // id obj代表着数组中的每一个元素 //int i = 0; // for (id obj in array) // { // // 找出obj元素在数组中的位置 // NSUInteger i = [array indexOfObject:obj]; // // NSLog(@"%ld - %@", i, obj); // //i++; // // if (i==1) // { // break; // } // } [array enumerateObjectsUsingBlock: // 每遍历到一个元素,就会调用一次block // 并且当前元素和索引位置当做参数传给block ^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%ld - %@", idx, obj); if (idx == 0) { // 停止遍历 *stop = YES; } }]; // void ^(myblock)(id, NSUInteger, BOOL *) = ^(id obj, NSUInteger idx, BOOL *stop) // { // NSLog(@"%ld - %@", idx, obj); // // // if (idx == 0) // { // // 停止遍历 // *stop = YES; // } // }; // // for (int i = 0; i<array.count; i++) // { // // 用来标记是否需要停止遍历 // BOOL isStop = NO; // // // 取出元素 // id obj = array[i]; // // myblock(obj, i, &isStop); // // // if (isStop) // { // break; // } // } } void use() { /* int a = 5; int ages[10] = {1, 90, 89, 17}; Person *p = [[Person alloc] init]; Person *persons[5] = {p, [[Person alloc] init]}; */ // OC数组不能存放nil值 // OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等 // 这个array永远是空数组 // NSArray *array = [NSArray array]; /* 1.NSArray的创建 */ NSArray *array2 = [NSArray arrayWithObject:@"jack"]; // nil是数组元素结束的标记 NSArray *array3 = [NSArray arrayWithObjects:@"jack", @"rose", nil]; // [array2 count]; //NSArray *array4 = [NSArray arrayWithObjects:@"jack", @"rose", @"4324324", nil]; // 快速创建一个NSArray对象 NSArray *array4 = @[@"jack", @"rose", @"4324324"]; /* 2.NSArray的元素个数 */ NSLog(@"%ld", array3.count); /* 3.NSArray中元素的访问 */ NSLog(@"%@", [array3 objectAtIndex:1]); //array3[1]; NSLog(@"%@", array3[0]); }
总结:NSArray定义的是一个不可变的数组,而NSMutableArray定义的是一个可以改变的数组。数组中可以存放任何的oc对象,但是基本数据类型不能放到数组中。
二.NSSet
#import <Foundation/Foundation.h> int main() { NSMutableSet *s = [NSMutableSet set]; // 添加元素 [s addObject:@"hack"]; // 删除元素 // [s removeObject:<#(id)#>]; return 0; } // set的基本使用 void test() { NSSet *s = [NSSet set]; NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil]; // 随机拿出一个元素 NSString *str = [s2 anyObject]; NSLog(@"%@", str); //NSLog(@"%ld", s2.count); }
总结: NSSet和NSArray的对比:
1> 共同点
* 都是集合,都能存放多个OC对象
* 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)
* 本身都不可变,都有一个可变的子类
2> 不同点
* NSArray有顺序,NSSet没有顺序
三、NSDictionary/NSDMutableDictionary
//创建一个字典对象,不可变 NSDictionary *dic = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"]; id obj = [dic objectForKey:@"name"]; //查找对象 //快速创建字典方式,注意字典中的对象也是无序的 NSDictionary *dic1 = @{@"name":@"jack", @"address":@"北京"}; id obj1 = dic[@"name"]; //快速提取对象 //创建一个可改变的字典 NSMutableDictionary *dic2 = [NSMutableDictionary dictionary]; [dic2 setObject:@"jack" forKey:@"name"]; //添加字典内容 [dic2 removeObjectForKey:@"name"]; //删除字典元素
总结:在NSDictionary中存储的都是键值对。对应关系为:索引->文字内容, key->value。
四、NSData
#import <Foundation/Foundation.h> int main() { // 09/10/2011 NSString *time = @"2011/09/10 18:56"; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyy/MM/dd HH:mm"; NSDate *date = [formatter dateFromString:time]; NSLog(@"%@", date); return 0; } void date2string() { NSDate *date = [NSDate date]; // 日期格式化类 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; // y 年 M 月 d 日 // m 分 s 秒 H (24)时 h(12)时 formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSString *str = [formatter stringFromDate:date]; NSLog(@"%@", str); } void use() { // 创建一个时间对象 NSDate *date = [NSDate date]; // 打印出的时候是0时区的时间(北京-东8区) NSLog(@"%@", date); NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date]; // 从1970开始走过的秒数 NSTimeInterval seconds = [date2 timeIntervalSince1970]; // [date2 timeIntervalSinceNow]; }
总结:Foundation框架中的字符串主要包含NSString,集合类(NSArray,NSSet,NSDictionary,NSDate,NSObject)。
相关文章推荐
- 黑马程序员——Foundation框架之结构体、字符串和集合
- 黑马程序员——Foundation框架学习——OC结构体、字符串、OC集合、NSNumber,NSValue、OC时间对象
- 黑马程序员------Foundation框架------OC集合类的操作
- 黑马程序员------foundation字符串无序集合,字典
- 黑马程序员——iOS——Foundation框架——字符串NSString
- [黑马程序员][OC]Foundation框架中的集合类
- 黑马程序员_JAVAAPI(字符串与集合框架)
- Objective-C Foundation框架 字符串、集合
- 黑马程序员——Foundation框架—字符串方法
- 黑马程序员——Foundation框架结构体、字符串、数组
- 黑马程序员——iOS——Foundation框架——字符串NSString
- ObjC学习9-Foundation框架之数字、字符串和集合
- 黑马程序员——IOS基础——Foundation框架——结构体、字符串、数组
- 黑马程序员-OC学习笔记-----Foundation框架(集合、NSNumber、NSDate)
- 黑马程序员——Foundation框架:结构体及字符串之NSString
- 【黑马程序员】-Foundation框架-集合及其它
- 黑马程序员——Foundation框架——集合类(NSSet、NSArray等)(二)
- 黑马程序员:集合框架List
- 黑马程序员_集合框架
- 黑马程序员—Java基础—集合框架4