学习笔记:Foundation(2)---常用类、集合类使用
2015-04-08 14:05
483 查看
NSString:不可变字符串
NSMutableString: 可变字符串
NSString
一、字符串的创建
方式1:NSString *s1 = @"jack";
方式2:用initWithString方法//不推荐使用
方式3:用initWithFormat方法创建注:initWithFormat方法和stringWithFormat方法区别:后者是类方法前者是对象方法
方式4:用initWithUTF8String方法
方式5:用initWithContentsOfFile方法
二、读取URL资源(字符串另一种创建方式)
通过相应的类方法创建如下:
三、将字符串写入文件:
四、可变字符串子类:NSMutableString
NSArray
NSArray:不可变数组
NSArray:可变数组
注:OC数组只能存放OC对象,不能存放非OC对象类型,如enum,int等。
NSArray:
1、数组的创建
方式1:NSArray *array1 = [NSArray arrayWithObject:@"jack"];
方式2:NSArray *array2 = [NSArray arrayWithObjects:@"jack",@"rose",nil];//nil是数组元素结束的标记,不适用
方式3:NSArray *array2 = @[@"jack",@"rose",@"3897534897"];//不需要nil
2、数组元素的个数
[array count]或者array.count//count是数组对象的get方法
NSLog(@"%ld",array.count);
3、输出单个元素
方式1:NSLog(@"%@",[array3 objectAtIndex:1]);//不适用
方式2:NSLog(@"%@",array[0]);
4、输出多个元素
Person *p = [[Person alloc] init];
NSArray
方式1:for (int i = 0; i<array.count; i++)
{
NSLog(@"%@",array[i]);
}
方式2:快速遍历for(id obj in array)
// id obj代表着数组中的每一个元素
{
// 找出obj元素在数组中的位置
// NSUInterger i = [array indexOfObject:obj];
NSLog(@"%ld - %@", i, obj);
// i++;
}
方式3: [array enumerateObjetsUsingBlock:
//没遍历一个元素,就会调用一次block
//并且当前元素和索引位置当做参数传递给block
^(id obj, NSUInteger idx, BOOL *stop)
{
NSLog(@"%ld - %@", idx, obj);
if (idx ==0)
{//停止遍历
*stop = YES;
}
}];
NSMutableArray
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jack", nil];
1、添加元素
[array addObject:[[Person alloc]init]];
[array addObject:@"abc"];
2、删除元素
[array removeAllObjects];
删除指定的对象
[array removeObject:@"haha"];
删除指定索引的元素
[array removeObjectAtIndex:1];
错误写法
[array addObject:nil];
注:@[]返回的是NSArray,只能创建不可变数组NSArray
NSMutableArray *array = @[@”abc”];//错
NSSet和NSMutableSet
NSSet:无序集合类
NSSet *s = [NSSet set];
NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose",nil];
NSString *str = [s2 anyObject];
1、创建多元素NSSet
NSSet *s1 =[NSSet setWithObjects:@”jack”,@”rose”,nil];
2、随机取出一个元素
NSString *s2 = [s1 anyObject];
NSMutableSet
NSMutableSet *s = [NSMutableSet set];
添加元素
[s addObject:@”abc”];
删除指定元素
[s removeObject:(id)];
NSSet和NSArray对比
1)共同点
都是集合,都能存放多个对象
都只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)
本身不可变,都有一个可变的子类
2)不同:NSSet无序,NSArray有序
NSDictionary和NSM
根据key找到value。里面存储的东西都是键值对。
NSDictionaryutableDictionary
创建字典
NSDictionary *dict = [NSDictionary dictionaryWithObject:@”jack” forKey:@”name”];
id obj = [dict objectForkey:@"name"];
NSLog(@"%@",obj);
快速创建字典
NSDictionary *dict = @{@”name”:@”jack”};
如图:
访问
根据key获取对应的值
id obj = [dict objectForKey:@”name”];
快速访问
id obj = dict [@”name”];
访问键值对的个数:dict.count
NSMutableDictionary
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
添加、移除键值对
[dict setObject:@”jack” forKey:@”name”];注:遇到同一个键时,后面的值会覆盖前面的值。
[dict removeObjectForKey:(id)];
遍历
NSDictionary *dict = @(@"address" :@"北京",@“name” :@"Jack",@"qq"
:@"5489413");
方式1:
NSArray
*keys = [dict allkeys];
for(int i = 0; i<dict.count; i++)
{
NSString *key = [dict allkeys];
NSString *obj = dict[key];
NSLog(@"%@ - %@",key, object);
}
[dict enumerateKeysAndObjectsUsingBlock:
^(id key, id obj, BOOL *stop)
{
NSLog(@"%@ - %@", key, obj);
// *stop = YES;
}];
注意:字典不允许有相同的key,但允许有相同的value,字典也是无序的。
NSMutableDictionary创建、访问等和父类一样,唯一要注意的地方是下面这个:
返回的是NSDictionary类型的.
NSMutableDictionary *dict = @{@"name" : @"jack"};
[dict setObject:@"rose" forKey:@"name"];
NSNumber、NSDate、NSValue
NSNumber
将基本数据类型包装成对象
NSNumber *num = [NSNumber numberWithInt:25];
NSDictionary *dict =@{@”age”: num};
NSNumber *num1 = dict[@”age”];
int a = [num2 intValue];
将int a = 20;转成字符串
NSString *str = [NSString stringWithFormat:@"%d",a];
[str intValue];//将字符串转回int
编译器特性:自动将基本数据类型包装成对象
NSArray *aray = @{@”age”:@20};
@’A’ ;//NSNumber对象 @(age)
@”A”;//NSString对象
NSValue
NSNumber继承自NSValue。
1)结构体--->OC对象
CGPoint p = CGPointMake(10, 10);
2) 将结构体转为Value对象
NSValue *value = [NSValue valueWithPoint:p];
3)将value转为对应的结构体
// [value pointValue];
NSArray *array = @[value ];
NSDate
1、创建一个时间对象
NSDate *date = [NSDate date];
2、打印出的时候是0时区的时间。
NSLog(@"%@", date);
NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];//比上面时间晚5秒
3、从1970开始走过的秒数
NSTimeInterval seconds = [date2 timeIntervalSince1970];
// [date2 timeIntervalSinceNow];
4、日期格式化
NSString *time = @"2015/4/10 23:11";
1)日期格式化类
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
2)y年M月d日 24时m分
formatter.dateFormat = @"yyyy/MM/dd HH:mm";
NSDate *date = [formatter dateFromString:time];
NSLog(@"%@", date);
NSMutableString: 可变字符串
NSString
一、字符串的创建
方式1:NSString *s1 = @"jack";
方式2:用initWithString方法//不推荐使用
方式3:用initWithFormat方法创建注:initWithFormat方法和stringWithFormat方法区别:后者是类方法前者是对象方法
方式4:用initWithUTF8String方法
方式5:用initWithContentsOfFile方法
二、读取URL资源(字符串另一种创建方式)
通过相应的类方法创建如下:
三、将字符串写入文件:
四、可变字符串子类:NSMutableString
NSArray
NSArray:不可变数组
NSArray:可变数组
注:OC数组只能存放OC对象,不能存放非OC对象类型,如enum,int等。
NSArray:
1、数组的创建
方式1:NSArray *array1 = [NSArray arrayWithObject:@"jack"];
方式2:NSArray *array2 = [NSArray arrayWithObjects:@"jack",@"rose",nil];//nil是数组元素结束的标记,不适用
方式3:NSArray *array2 = @[@"jack",@"rose",@"3897534897"];//不需要nil
2、数组元素的个数
[array count]或者array.count//count是数组对象的get方法
NSLog(@"%ld",array.count);
3、输出单个元素
方式1:NSLog(@"%@",[array3 objectAtIndex:1]);//不适用
方式2:NSLog(@"%@",array[0]);
4、输出多个元素
Person *p = [[Person alloc] init];
NSArray
方式1:for (int i = 0; i<array.count; i++)
{
NSLog(@"%@",array[i]);
}
方式2:快速遍历for(id obj in array)
// id obj代表着数组中的每一个元素
{
// 找出obj元素在数组中的位置
// NSUInterger i = [array indexOfObject:obj];
NSLog(@"%ld - %@", i, obj);
// i++;
}
方式3: [array enumerateObjetsUsingBlock:
//没遍历一个元素,就会调用一次block
//并且当前元素和索引位置当做参数传递给block
^(id obj, NSUInteger idx, BOOL *stop)
{
NSLog(@"%ld - %@", idx, obj);
if (idx ==0)
{//停止遍历
*stop = YES;
}
}];
NSMutableArray
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jack", nil];
1、添加元素
[array addObject:[[Person alloc]init]];
[array addObject:@"abc"];
2、删除元素
[array removeAllObjects];
删除指定的对象
[array removeObject:@"haha"];
删除指定索引的元素
[array removeObjectAtIndex:1];
错误写法
[array addObject:nil];
注:@[]返回的是NSArray,只能创建不可变数组NSArray
NSMutableArray *array = @[@”abc”];//错
NSSet和NSMutableSet
NSSet:无序集合类
NSSet *s = [NSSet set];
NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose",nil];
NSString *str = [s2 anyObject];
1、创建多元素NSSet
NSSet *s1 =[NSSet setWithObjects:@”jack”,@”rose”,nil];
2、随机取出一个元素
NSString *s2 = [s1 anyObject];
NSMutableSet
NSMutableSet *s = [NSMutableSet set];
添加元素
[s addObject:@”abc”];
删除指定元素
[s removeObject:(id)];
NSSet和NSArray对比
1)共同点
都是集合,都能存放多个对象
都只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)
本身不可变,都有一个可变的子类
2)不同:NSSet无序,NSArray有序
NSDictionary和NSM
根据key找到value。里面存储的东西都是键值对。
NSDictionaryutableDictionary
创建字典
NSDictionary *dict = [NSDictionary dictionaryWithObject:@”jack” forKey:@”name”];
id obj = [dict objectForkey:@"name"];
NSLog(@"%@",obj);
快速创建字典
NSDictionary *dict = @{@”name”:@”jack”};
如图:
访问
根据key获取对应的值
id obj = [dict objectForKey:@”name”];
快速访问
id obj = dict [@”name”];
访问键值对的个数:dict.count
NSMutableDictionary
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
添加、移除键值对
[dict setObject:@”jack” forKey:@”name”];注:遇到同一个键时,后面的值会覆盖前面的值。
[dict removeObjectForKey:(id)];
遍历
NSDictionary *dict = @(@"address" :@"北京",@“name” :@"Jack",@"qq"
:@"5489413");
方式1:
NSArray
*keys = [dict allkeys];
for(int i = 0; i<dict.count; i++)
{
NSString *key = [dict allkeys];
NSString *obj = dict[key];
NSLog(@"%@ - %@",key, object);
}
[dict enumerateKeysAndObjectsUsingBlock:
^(id key, id obj, BOOL *stop)
{
NSLog(@"%@ - %@", key, obj);
// *stop = YES;
}];
注意:字典不允许有相同的key,但允许有相同的value,字典也是无序的。
NSMutableDictionary创建、访问等和父类一样,唯一要注意的地方是下面这个:
返回的是NSDictionary类型的.
NSMutableDictionary *dict = @{@"name" : @"jack"};
[dict setObject:@"rose" forKey:@"name"];
NSNumber、NSDate、NSValue
NSNumber
将基本数据类型包装成对象
NSNumber *num = [NSNumber numberWithInt:25];
NSDictionary *dict =@{@”age”: num};
NSNumber *num1 = dict[@”age”];
int a = [num2 intValue];
将int a = 20;转成字符串
NSString *str = [NSString stringWithFormat:@"%d",a];
[str intValue];//将字符串转回int
编译器特性:自动将基本数据类型包装成对象
NSArray *aray = @{@”age”:@20};
@’A’ ;//NSNumber对象 @(age)
@”A”;//NSString对象
NSValue
NSNumber继承自NSValue。
1)结构体--->OC对象
CGPoint p = CGPointMake(10, 10);
2) 将结构体转为Value对象
NSValue *value = [NSValue valueWithPoint:p];
3)将value转为对应的结构体
// [value pointValue];
NSArray *array = @[value ];
NSDate
1、创建一个时间对象
NSDate *date = [NSDate date];
2、打印出的时候是0时区的时间。
NSLog(@"%@", date);
NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];//比上面时间晚5秒
3、从1970开始走过的秒数
NSTimeInterval seconds = [date2 timeIntervalSince1970];
// [date2 timeIntervalSinceNow];
4、日期格式化
NSString *time = @"2015/4/10 23:11";
1)日期格式化类
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
2)y年M月d日 24时m分
formatter.dateFormat = @"yyyy/MM/dd HH:mm";
NSDate *date = [formatter dateFromString:time];
NSLog(@"%@", date);
相关文章推荐
- Java学习笔记44:常用集合使用
- Hibernate 集合属性List 的使用----Hibernate 学习笔记总结(一)
- Hibernate 集合属性List 的使用----Hibernate 学习笔记总结(一)
- 【Foundation学习笔记】常用结构体--NSRange、NSPoint、NSSize、NSRect
- [Linux学习笔记] Linux常用命令 - 番外篇(Shell使用技巧)
- Swift学习笔记(十七)——导入Foundation使用更多字符串功能
- Flex学习笔记_05 使用组件处理数据和交互_01常用组件
- 黑马视频学习笔记-FOUNDATION-Array集合
- OC学习笔记 Foundation 框架中常用的类 之字符串
- php学习笔记(十八)Header使用的HTTP协议及常用方法
- 黑马程序员---OC学习笔记之Foundation框架:NSString的基本使用
- object-c学习笔记:Foundation框架常用类(二)
- Linux 学习笔记_3_Linux常用命令_8_Shell使用技巧
- hibernate学习笔记12--Hibernate中使用的集合类型
- python3.4学习笔记(六) 常用快捷键使用技巧,持续更新
- Struts学习笔记之在ActionForm中使用集合属性并自动组装(populate)数据
- object-c学习笔记:Foundation框架常用类(一)
- iOS学习笔记30-could not build module 'Foundation' (使用Zbar二维码操作时)
- ThinkPHP学习笔记(六)常用的连贯操作和模版的使用
- OC学习笔记15--Foundation之NSArray与NSMutableArray常用方法