Fountation框架的简单使用

1、NSRange\CGRange

NSRange r1 = {2, 4};
NSRange r2 = {.location = 2, .length = 4};
NSRange r3 = NSMakeRange(2, 4);

// string转range:
NSRange range = [str rangeOfString:@"abc"];
NSLog(@"location = %d, length = %d", range.location, range.length);

// range的成员类型为unsigned long
// range.location == NSUInteger == unsigned long

// 如果range在字符串中不存在,那么length=0,location=NSNotFound
// NSNotFound是一个枚举常量,值以%d打印为-1,以%ld打印为9223372036854775807

2、NSPoint\CGPoint || NSSize\CGSize || NSRect\CGRect

CGPoint p1 = NSMakePoint(10, 10);
NSPoint p2 = CGPointMake(20, 20);	// 最常用

// 原点表示:(同理,size和rect都有zero常量)
CGPointZero == CGPointMake(0, 0)

NSSize s1 = CGSizeMake(100, 50);
NSSize s2 = NSMakeSize(100, 50);
CGSize s3 = NSMakeSize(200, 100);

CGRect r1 = CGRectMake(0,0,100,50);

// 打印CGRect如下:
NSLog(@"x=%f, y=%f, width=%f, height=%f", r1.origin.x, r1.origin.y, r1.size.width, r1.size.height);
// 但是上边的方法很麻烦,所以通常打印结构体会先将结构体转成字符串,再打印

// point转字符串:
NSString *str = NSStringFromPoint(p1);
NSLog(@"%@", str);

// size转字符串:
NSString *str2 = NSStringFromSize(s1);

// rect转字符串:
NSString *str3 = NSStringFromRect(r1);

// CGRect的另一种创建方式:
CGRect r2 = {{0, 0}, {100, 90}};
CGRect r3 = {p1, s1};

// 对比两个point是否相等:(同理,size和rect也有此方法)
Bool b = CGPointEqualToPoint(p1, p2);

3、NSString

// 把字符串输入到某个路径下的某个文件里
[@"java\njava" writeToFile:@"/Users/apple/Desktop/my.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];

// 第二种方法:
NSString *str = @"ABCDEFG";
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/my2.txt"];
[str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];

// NSMutableString可变字符串的使用:

NSMutableString *s1 = [NSMutableString stringWithFormat:@"age is 10"];
[s1 appendString:@" 11 12"];	// 在s1后面追加字符串
[s1 deleteCharactersInRange:NSMakeRange(4, 2)];	// 删除is

NSRange range = [s1 rangeOfString:@"is"];
[s1 deleteCharactersInRange:range];

// NSString的stringByAppendString方法生成一个新字符串,而不改变原来的字符串,因为NSString是不可变字符串
NSString *s2 = [NSString stringWithFormat:@"age is 10"];
NSString *s3 = [s2 stringByAppendString:@" 11 12"];
// 截取字符串方法
NSString *str = @"itcast";
NSString *str1 = [str substringWithRange:NSMakeRange(0, 4)];
NSLog(@"%@", str1); // 输出为“itca”


4、NSArray

// OC数组只能存放OC对象,不能存放非OC对象类型,比如int、struct、enum等
// 例如:
Person *p = [[Person alloc] init];
Person *person[5] = {p, [[Person alloc] init]};

// 永远是空数组,因为不可变
NSArray *array = [NSArray array];
// 一个元素
NSArray *array2 = [NSArray arrayWithObject:@"jack"];
// 多个元素,以nil为数组结束标记,所以不能存放nil(类似\0)
NSArray *array3 = [NSArray arrayWithObject:@"jack", @"rose", nil];

// 快速创建数组对象
NSArray *array4 = @[@"jack", @"rose", @"abcde"];

// 获取数组的元素个数
//[array3 count] == array3.count

// 获取某个下标下的元素
Nsstring *item = [array3 objectAtIndex:1];
// 简化写法
array3[1];

// 遍历数组
for(int i=0;i<array3.count;i++)
{
	NSLog(@"%@", array3[i]);
}
// 遍历数组的简化写法
for(id obj in array3)
{
	// 元素位置
	int i = [array3 indexOfObject:obj];
	// obj是元素
	NSLog(@"%d-%@", i, obj);
}
// 数组遍历最简写法(利用block)
[array3 enumerateObjectsUsingBlock:
^(id obj, NSUInteger idx, BOOL *stop)
{
	// idx为数组下标,obj为元素,stop为控制是否退出循环的变量地址
	NSLog(@"%ld - %@", idx, obj);
	// 当idx等于1时
	if(idx == 1)
	{
		// 退出循环
		*stop = YES;
	}
}];

5、NSMutableArray

NSMutableArray *array = [NSMutableArray array];
[array addObject:[[Person alloc]init]];
[array addObject:@"jack"];

NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];	// 初始化数组
// 删除全部元素
[array removeAllObjects];
// 删除指定元素
[array removeObject:@"jack"];
[array removeObjectAtIndex:2];

5、NSSet/NSMutableSet(无序)
// NSSet是无序的,所以不可以使用s2[0]来取元素
NSSet *s = [NSSet set];
NSSet *s2 = [NSSet setWithObjects:@"jack", @"rose", nil];
NSString *str = [s2 anyObject];

NSMutableSet *s = [NSMutableSet set];
[s addObject:@"jack"];	// 添加元素
[s removeObject:@"jack"];	// 删除元素

6、NSDictionary(无序)

// 创建字典
NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
// 获取字典里的内容
id *name = [dict objectForKey:@"name"];

// 使用数组创建字典:
NSArray *keys = @[@"name", @"address"];
NSArray *objects = @[@"jack", @"beijing"];
NSDictionary *dict2 = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
// 取字典内容
id obj = [dict2 objectForKey:@"address"];

// 创建字典简化写法:
NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:
			@"jack", @"name", 
			@"beijing", @"address", nil];
// 字典最简写法
NSDictionary *dict4 = @{@"name":@"jack", @"address":@"beijing"};
// 获取字典内容最简写法
id obj = dict4[@"name"];
// 获取键值对个数
unsigned long num = dict4.count;

7、NSMutableDictionary(无序)

// 创建NSMutableDictionary
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
// 添加键值对
[dict setObject:@"jack" forKey:@"name"];
[dict setObject:@"beijing" forKey:@"address"];
[dict setObject:@"rose" forKey:@"name"];
// 获取键值
NSString *str = dict[@"name"];
// 移除键值对
[dict removeObjectForKey:@"name"];

// 遍历
NSDictionary *dict = @{@"address":@"beijing", @"name":@"jack", @"qq":@"21341"};
NSArray *keys = [dict allKeys];
for(int i=0;i<dict.count;i++)
{
	NSString *key = keys[i];
	NSString *obj = dict[key];
}
// 遍历的简便方式(利用block)
[dict enumerateKeysAndObjectsUsingBlock:
^(id key, id obj, BOOL *stop) {
	NSLog(@"%@ - %@", key, obj);
	// 如果值等于jack
	if(obj == @"jack")
	{
		// 退出循环
		*stop = YES;
	}
}];

8、NSNumber和NSValue

// 把基本数据类型封装成对象类型
NSNumber *num = [NSNumber numberWithInt:10];
NSNumber *num2 = [NSNumber numberWithDouble:10.5];

// 把对象类型转成基本数据类型
int i = [num intValue];
double d = [num2 doubleValue];

// 把字符串类型转成基本数据类型
NSString *str = [NSString stringWithFormat:@"%d", 20];
int a = [str intValue];

// 包装数据类型的简化写法
@20
@YES	// YES是常量1
@'a'	// 'a'是一个数字
// 把变量包装成NSNumber类型
int age = 25;
@(age);	// 如果不加括号,编译器会认为@age是关键字,但是又没有这个关键字,所以会报错

// 将结构体包装成对象
CGPoint p = CGPoint(10, 10);
NSValue *value = [NSValue valueWithPoint:p];
// 将value转为对应的结构体
CGPoint p1 = [value pointValue];

9、NSDate

// 创建时间对象
NSDate *date = [NSDate date];	// NSDate是当前格林治时间
// 比date晚5秒
NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];
// 从1970年开始,到date2的秒数
NSTimeInterval seconds = [date2 timeIntervalSince1970];
// date2和现在的时间相差多少秒
NSTimeInerval seconds2 = [date2 timeIntervalSinceNow];

// 日期格式化类
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];

// 字符串日期转为NSDate
NSString *time = @"2011/09/10 18:56";
// formatter去适配字符串日期的格式
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy/MM/dd HH:mm";
// 根据formatter格式把字符串日期time转成NSDate类型的date
NSDate *date = [formatter dateFromString:time];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值