今天,我学习了Foundation框架,以下是具体的学习内容:
Foundation框架是IOS开发的基础框架,里面包含了很多数据类型:
1)结构体
2)枚举
3)类
接下来从以下几个方面来学习:
一.结构体的学习:分为以下几个
1.NSRange;
2.NSPoint;
3.NSSize;
4.NSRect;
具体如下:
1.NSRange:
表示的时范围,里面有location和length两个属性,用法如下:
NSRange r1 = NSMakeRange(2, 4);//表示的是定义一个位置是2,长度为4的字符
NSRange range = [str rangeOfString:@"love"];
数据类型:NSUInteger = unsigned long
如果要查找的字符不存在,会输出location=-1(常量,Nntfound), length=0;
2.NSPoint:
表示的是一个左边,里面有float类型的两个变量,x和y,使用方法如下:
1).使用方法:
CGPoint p1 = NSMakePoint(10, 10);
NSPoint p2 = CGPointMake(10, 10);//常用
2).使用CGPointZero等的前提是添加CoreGraphics框架:
原点表示方法:
(0, 0)可以表示为: CGPpointZero = CGPointMake(0, 0);
3).判断两个点是否相同:
BOOL b = CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10));
3.NSSize:
表示的时一个有方形尺寸的元素,里面有两个float类型的变量,width和height,使用方法如下:
CGSize s1 = CGSizeMake(100, 50);
NSSize s2 = NSMakeSize(100, 50);
4.NSRect:
表示的是同时具有坐标和方形尺寸的元素,里面有NSPoint和NSSize两个变量,使用方法如下:
CGRect = CGRectMake(0, 0, 100, 50);
1)查看是否包括点元素的方法:
BOOL b2 = CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(60, 45));
5.将结构体转为字符串
NSString *str = NSStringFromPoint(p1);
NSString *str = NSStringFromSize(s3);
NSString *str = NSStringFromRect(r1);
打印:
NSLog(@"%@", str);
二.NSString/NSMutableString的学习:
1.都表示字符串,区别是:
NSString : 不可变字符串
NSMutableString : 可变字符串
2.字符串的创建:
NSString *s1 = @"rose";
NSString *s2 = [[NSString alloc] initWithString:@"jack"];
NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d", 10];
3.oc字符串和c字符串的转换:
// C字符串 --> OC字符串
NSString *s4 = [[NSString alloc] initWithUTF8String:"jack"];
// OC字符串 --> C字符串
const char *cs = [s4 UTF8String];
// NSUTF8StringEncoding用到中文就可以用这种编码
NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"绝对路径.文件拓展名" encoding:NSUTF8StringEncoding error:nil];
三.NSArray/NSMutableArray的学习:
1.两者都能表示数组,区别是:
NSArray :不可变数组,有顺序
NSMutableArray : 可变数组,有顺序
2.NSArray创建OC数组:
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的创建
NSArray *array4 = @[@"jack", @"rose", @"4324324"];
// NSArray的元素个数
NSLog(@"%ld", array3.count);
// NSArray中元素的访问
NSLog(@"%@", [array3 objectAtIndex:1]);
//array3[1];
NSLog(@"%@", array3[0]);
3.NSMutable创建OC数组:
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);
四.NSSet/NSMutable的学习:
1.两者都是集合,能够存放多个OC对象,都没有顺序.
如下列程序:
#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);
}
五.NSDictionary\NSMutableDictionary(字典)的学习:
1.特点:
* 无序;
* 创建出来的是一对键(key)值(value)组;
* 不允许有相同的key,可以有相同的value;
* 快速创建(不可变):@{key1 : value1, key2 : value2};
* 快速访问元素:字典名[key];
2.遍历字典内容:
[dict enumerateKeysAndObjectsUsingBlock:
^(id key, id obj, BOOL *stop) {
NSLog(@"%@ - %@", key, obj);
3.用NSMutableDictionary创建的对象可以进行修改:
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
// 添加键值对
[dict setObject:@"jack" forKey:@"name"];
[dict setObject:@"北京" forKey:@"address"];
[dict setObject:@"rose" forKey:@"name"];
六.NSNumber的学习:
1.作用:将各种非OC对象封装成为OC对象:
例如:
20
@"20";
将age包装成为NSNumber对象:
int age = 100;
@(age) 等价于[NSNumber numberWithInt:age]
七.NSDate的学习:
1.作用:创建一个时间对象,之前我们都是用结构体来表示的.
2.创建方法:
// 创建一个时间对象
NSDate *date = [NSDate date];
// 打印出的时候是0时区的时间(北京-东8区)
NSLog(@"%@", date);
// 比当前打印时间慢5秒
NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];
// 从1970开始走过的秒数
NSTimeInterval seconds = [date2 timeIntervalSince1970];
3.日期格式化类:
具体实现如下:
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);
总结:Foundation框架主要掌握的就是运用各种框架提供的方法去实现一些功能,要想弄清楚还需要多多练习.