黑马程序员-iOS学习日记(十)Foundation

---------------------- <a href="http://www.itheima.com"target="blank">iOS开发</a>、<a href="http://www.itheima.com"target="blank">iOS培训</a>、期待与您交流! ----------------------


一、Foundation

Foundation框架是其他所有iOS框架的基础。其中包含了很多常用的数据类型:结构体、枚举、类。


二、Foundation中的结构体

1、NSRange:范围

typedef struct _NSRange {
    NSUInteger location;    // 位置
    NSUInteger length;      // 长度
} NSRange;
NSRange range1 = {2, 4};
NSRange range2 = {.location = 2, .length = 4};
NSRange range3 = NSMakeRange(2, 4);
2、NSPoint/CGPoint:点坐标

typedef struct _CGPoint {
    CGFloat x;    // x坐标
    CGFloat y;    // y坐标
} CGPoint;

CGPoint point = CGPointMake(3, 4);

3、NSSize/CGSize:尺寸

typedef struct _CGSize {
    CGFloat width;    // 宽
    CGFloat height;   // 高
} CGSize

CGSize size = CGSizeMake(100, 50);

4、NSRect\CGRect:点坐标及尺寸

typedef struct _CGRect {
    CGPoint origin;
    CGSize size;
} CGRect
CGRect rect = CGRectMake(3, 4, 100, 50);

5、CGPoint、CGSize、CGRect常用常量和方法(需要添加CoreGraphics框架)

CGPointZero -> {0, 0}
CGSizeZero -> {0,0}

NSString *str = NSStringFromPoint(point);	// 转换成对应字符串
NSString *str = NSStringFromSize(size);	// 转换成对应字符串
NSString *str = NSStringFromRect(rect);	// 转换成对应字符串

BOOL isEqual = CGPointEqualToPoint(point1, point2);	// 判断两个点是否相同
BOOL isEqual = CGSizeEqualToSize(size1, size2);		// 判断两个尺寸是否相同

BOOL isContains = CGRectContainsPoint(rect, point);	// 判断区域是否包含点
BOOL isContains = CGRectContainsRect(rect1, rect2);	// 判断区域是否包含区域

三、Foundation中的方法

1、NSString、NSMutableString:字符串

// NSString
    
// 字符串的创建
NSString *str1 = @"WhyRanR";
NSString *str2 = [[NSString alloc] initWithFormat:@"Age is %d", 10];    // 格式化创建字符串
NSString *str3 =[[NSString alloc] initWithUTF8String:"itheima"];    // C字符串->OC字符串
const char *cStr = [str3 UTF8String];   // OC字符串 -> C字符串
    
// 比较字符串的值是否相同
BOOL isEqual = [str1 isEqualToString:str2]
    
// 字符串长度
NSUInteger length = str.length;
    
// 获得字符串某个位置的字符 索引从0开始
unichar c = [str characterAtIndex:1];
    
//  返回子字符串在对象字符串中的位置和长度 如果不匹配则返回 {NSNotFound, 0}
NSRange range = [@"Hello World!" rangeOfString:@"lo"];  // {3, 2}
    
// 截取字符串
NSString *subString = [str substringWithRange:NSMakeRange(2, 4)];
    
// 拼接字符串 返回值为新的字符串
NSString *newString = [str stringAppendingString:@" World"];
// NSMutableString
    
// 拼接字符串 返回值为void
[mStr appendString:@" World"];
  
// 删除某个范围内的字符
[mStr deleteCharactersInRange:NSMakeRange(2, 4)];


2、NSArray、NSMutableArray:数组(有序、元素可以重复)

// NSArray

// 创建数组
NSArray *array = @[@"cxn", @"lmq"];

// 数组内对象数量
NSUInteger count = array.count;

// 获得数组元素
id str = array[0];

// 找到元素在数组中的位置
NSUInteger index = [array indexOfObject:@"cxn"];

// 遍历
for (int i = 0; i < array.count; i++) {
	id obj = array[i];
	NSLog(@"%d -- %@", i, obj);
}

for (id obj in array) {
	NSLog(@"%@", obj);
}

[array enumerateObjectsUsingBlock:^(id obj, MSUInteger index, BOOL *stop){
	NSLog(@"%d -- %@", index, obj);
}]
// NSMutableArray

// 创建数组    !不能使用@[]方式创建
NSMutableArray *array = [NSMutableArray array];

// 添加元素
[array addObject:@"yxy"]

// 删除元素
[array removeObjectAtIndex:0]
[array removeObject:@"yxy"]
[array removeAllObjects]

3、NSSet、NSMutableSet:集合(无序、元素不能重复)
// NSSet

// 创建集合
NSSet *set = [NSSet setWithObjects:@"cxn", @"lmq", nil];

// 随机访问集合元素
id obj = [set anyObject];

4、NSDictionary、NSMutableDictionary:字典(无序、键值对、键不能重复)

// NSDictionary

// 创建字典
NSDictionary *dict = @{@"gwf" : @"tj", @"gwf" : @"bj"};

// 获得键值对个数
NSUInteger count = dict.count;

// 获得元素
id obj = dict[@"gwf"];

// 遍历
NSArray *keys = [dict allKeys];
for(int i = 0; i < dict.count; i++)
{
	id key = keys[i];
	id obj = dict[key];
	NSLog(@"%@ -- %@", key, obj);
}

[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
	NSLog(@"%@ -- %@", key, obj);
}]
// NSMutableDictionary

// 创建字典
NSMutableDictionary *dict = [NSMutableDictionary dictionary];

// 设置值
[dict setObject:@"值" forKey:@"键"];

// 删除值
[dict removeObjectForKey:@"键"];


5、NSNumber与NSValue:包装类

// int -> NSNumber
int n = 10;
NSNumber num = @(n);
// NSNumber -> int
int n = [num intValue];

// 结构体 -> NSValue
CGPoint p = CGPointMake(10, 10);
NSValue *value = [NSValue valueWithPoint:p];
// NSValue -> 结构体
CGPoint p = [value pointValue];


6、NSDate:日期时间类

// 创建当前时间
NSDate *date = [NSDate date];

// 转化时间
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 定义格式
formatter.dateFormat = @"yyyy-MM-dd";
// 时间 -> 字符串
NSString *dateStr = [formatter stringFromDate:date];
// 字符串 -> 时间
NSDate date = [formatter dateFromString:dateStr];

---------------------- <a href="http://www.itheima.com"target="blank">iOS开发</a>、<a href="http://www.itheima.com"target="blank">iOS培训</a>、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值