黑马程序员 OC框架: Foundation
来源:互联网 发布:淘宝订单数据跟踪 编辑:程序博客网 时间:2024/04/28 13:40
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——
常用结构体
NSRange
查找某个字符串在 str 中的范围
Range 结构体 有两个元素
length 和 location
快速定义 NSRange :
NSRange r = NSMakeRange(2, 4);
获得字符串的 Range 信息
NSString *s = @“hello world!”;NSRange r = [s rangOfString:@“ll”];
结果 :
r.length = 2r.location = 2
若找不到 :
length = 0location = NSNotFound ( 实际值为 -1 )
CGpoint/ NSpoint
CGpoint = NSpointCGpoint 是跨平台的,在开发中常用.
快速创建方法 :
CGPoint p1 = CGPointMake(10,9); //开发中常用NSPoint p2 = NSMakePoint(120,20);
CGSize/NSSzie
NSSzie s1 = CGSizeMake(100, 50);NSSzie s2 = NSMakeSize(20,20);
结构体打印
NSRect r1 = CGRectMake(0, 0, 100, 50); NSString *str = NSStringFromRect(r1); NSLog(@"%@", str);
打印结构体的常用方法是先转换成字符串再打印
补充
CGPointZero == CGPointMake(0,0); 这种便捷的方法比较常用CGPointEqualToPoint(p1 ,p2); 比较两个点是否相同CGRectContainsPoint(Rect, Point) 判断矩形中是否包含这个点
CG 开头的函数依赖于 CoreGraphics 框架,而一般默认就有这个框架
这些函数功能的声明在 Foundation 框架中, 定义在 CoreGraphics 框架中.
Foundation 常用类
NSString—>NSMutableStringNSArray—>NSMutableArrayNSSet—>NSMutableSetNSDictionary—>NSMutableDictionary
以上都是集合类 . 用法都非常类似.
NSString
不可变字符串的创建
NSString *s1 = @"234234"; NSString *s2 = [[NSString alloc] initWithSting:@”123123”] NSString *s3 = [[NSSting alloc] initWithFormat:@“age is %d”, 10];
转换
NSString *s4 = [[NSString alloc] initWithUTF8String:”jack”]; // c 字符串—>oc 字符串 const char *cs = [s4 UTF8String]; //oc字符串转 c 字符串// 文件内容转 NSString NSString *s5 = [[NSString alloc] initWithContentsOfFile:@“文件路径” encoding:NSUTF8StringEncoding error:nil];// NSUTF8StringEncoding 用到中文就可以用这种方法
NSMutableString : 可变字符串
NSString 的子类
创建和使用
NSMutableString *s1 = [NSMutableString stringWithFormat:@"age is 10"];[s1 appendString:@“ 11 12”]; // 字符串拼接[s1 deleteCharactersInRange:NSMakeRange(4, 2)]; // 删除指定范围字符串
比较稳妥的方法
NSRange range = [s1 rangeOfString:@"is"];[s1 deleteCharactersInRang:range];
创建一个新的拼接后的字符串
NSString *s2 = [NSString stringWithFormat:@"age is 10"]NSString *s3 = [s2 stringByAppendingString:@“ 11 12”];
URL
URL : 资源路径协议头 :// 路径file :// 本地资源ftp ://http ://weibo.com/a.png
URL 使用方法
NSURL *url = [[NUSRL alloc] initWithString:@"file:// /Users/apple/Desktop/1.txt"]; // 字符串转 URLNSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; // URL 链接中的资源内容转 NSString/* 一般都会有一个类方法跟对象方法配对[NSString stringWithFormat:@“”]; 用类方法来初始化会更方便[NSString stringWithContentsOfFile: ………];[NSURL URLWithString:(NSString *)];[NSURL fileURLWithPath:@“/Users/apple/Desktop/1.txt”];*/
NSArray
oc 数组只能存放 oc 对象.不能存放非 oc 对象类型.比如 int/ struct/ enum 等就不能存放
创建 oc 数组
NSArray *array = [NSArray arrayWithObject:@"jack"]; // 就一个元素NSArray *array2 = [NSArray arrayWithObject:@"jack",@"rose",nil]; // nil 是数组结束的标记NSLog(@“%ld”, array2.count);
打印数组元素
NSLog(@"%@", [array2 objectAtIndex:1];NSLog(@"%@", array2[1]); 语法糖
快速创建一个 NSArray 对象 只能创建不可变数组
NSArray *array3 = @[@"jack",@"rose",nil];
快速遍历oc 数组
for (int i = 0; i<array.count; i++){ NSLog(@"%@", array[i]);}// id obj代表着数组中的每一个元素for (id obj in array){ NSLog(@"%@", obj);} // 找出 obj 元素在数组中的位置for (id obj in array){ NSUInteger i = [array indexOfObject:obj]; NSLog(@"%ld - %@", i, obj)}// 使用代码块. 每遍历到一个元素,就会调用依次 block// 并且当前元素和索引位置当做参数传给 block[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){ NSLog(@"%ld - %@", idx, obj); if (idx == 1) { *stop = YES; // stop 为停止指针,退出条件 }}];
NSMutableArray
NSMutableArray *array = [NSMutableArray array];[array addObject:@"jack"]; // 可以添加任意对象
删除所有元素
[array removeAllObjects];
删除指定的对象
[array removeObject:@“jack”];[array removeObjectIndex:2];
NSSet/NSMutableSet
NSSet中的元素没有顺序
NSSet *s = [NSSet set];NSSet *s2 = [NSSet setWithObject:@"jack",@"rose",nil];NSLog(@“%ld”, s2.count];
随机拿出一个元素
NSString *str = [s2 anyObject];
NSSet 和 NSArray 的对比
1> 共同点
* 都是集合,都能存放多个 oc 对象*只能存放 oc 对象,不能存放非 oc 对象类型*本身都不可变,都有一个可变的子类
2>不同点
*NSArray 是有序的, NSSet 是无序的.
NSDictionary
key ----> value 索引 ----> 文字内容
字典里面存的东西都是键值对.
创建与查看 :
// NSDictionary *dict = [NSDictionary dictionaryWithObjects:@"jack" forKeys:@"key"]; NSDictionary *dict = @{@"name": @"jack",@"address" : @"北京"}; // id obj = [dict objectForKey:@"name"]; id obj = dict[@"name"]; NSLog(@"%@", obj); NSLog(@"%ld", dict.count); // 返回键值对的个数
遍历字典
NSDictionary *dict = @{ @"name" : @"jack", @"address" : @"北京", @"qq" : @"123124"}; [dict enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) { NSLog(@"%@ - %@", key, obj); }];
NSMutableDictionary
NSMutableDictionary *dict = [NSMutableDictionary dictionary]; [dict setObject:@"jack" forKey:@"name"]; [dict setObject:@"北京" forKey:@"adress"]; // 重复的键值对会覆盖 [dict removeObjectForKey:@"name"]; //remove
oc 的方法都用英文写的非常直观了,所以英文好的会几乎都能猜出来它的方法.
所以,好好学习英语吧.
小结
1.NSArray\NSMutableArray
*有序*快速创建(不可变): @[]*快速访问元素: 数组名[i]
2.NSSet\NSMutableSet
*无序
3.NSDictionary\NSMutableDictionary
*无序*快速创建(不可变): @{key1 : value1, key2 : value2, key3 :value3}*快速访问元素: 字典名[key]
NSNumber
因为 oc 数组中不能存放除对象外的数据
所以 用 NSNumber 来进行转换
NSNumber *num = [NSNumber numberWithInt:10];int a = [num intValue];
语法糖来了,编译器特性让我们写程序方便不少.
@20 将 20 包装成一个 NSNumber 对象
用法如下
@YES@‘A’@“A”int age = 100;@(age); 将 age 变量包装成 NSNumber 对象
NSValue
NSNumber 之所以能包装基本数据类型为对象,是因为继承了 NSValue.NSValue 还能放 NSNumber 放不了的结构体等
结构体—> oc 对象
CGPoint p = CGPointMake(10, 10);NSValue *value= [NSValue valueWithPoint:p];
—> 结构体
[value pointValue];
NSDate
创建一个时间对象
NSDate *date = [NSDate date];
创建的内容就是当前时间
主要用法 :
// 日期格式化类 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; // H (24) 时制 h (12) 时制
获得当前格式的时间 String
NSString *str = [formatter stringFromDate:date];
String —> date
NSString *time = @“2012/12/1 18:40”;NSDateFormatter *formatter = [[NSDateFormatter alloc] init];formatter.dateFormat = @"yyyy/MM/dd HH:mm";NSDate *date = [formatter dateFromString:time];
- 黑马程序员 OC框架: Foundation
- 黑马程序员------OC Foundation框架
- 黑马程序员--OC之Foundation框架
- 黑马程序员-12.OC的Foundation框架
- 黑马程序员-OC-Foundation框架基本介绍
- 黑马程序员---【OC语言】08Foundation框架
- 黑马程序员---OC Foundation框架--集合类
- 黑马程序员-OC语言Foundation框架
- 黑马程序员---OC基础---Foundation框架学习
- 黑马程序员------oc foundation结构框架
- 黑马程序员-OC-Foundation框架总结一
- 【黑马程序员】OC-Foundation框架—NSMutableString
- 黑马程序员---oc Foundation
- 黑马程序员------[Foundation]Foundation框架
- 黑马程序员 _11 OC基础 Foundation框架初学
- 黑马程序员-IOS-OC基础-Foundation框架的简单使用
- 黑马程序员学习笔记-OC之foundation框架
- [黑马程序员][OC]Foundation框架中的集合类
- 链表学习笔记--链式链表
- RFID第三次作业题7-2
- c++ 成员函数和全局函数的转换
- 2015中国智能硬件蛋年创新大会手记
- 第1章 第10题
- 黑马程序员 OC框架: Foundation
- Verilog DAC8568
- MFC模态对话框和非模态对话框
- RFID第三次作业题7-9
- SNMP++-3.3.4 在VS2013编译成SNMP++的最新实践方法(支持SNMPv3)
- tomcat部署web项目的3中方法
- javac代码阅读。
- JPEG编码基本流程概述
- 排序算法学习笔记-C语言版本