OC_语法入门_day7_Foundation框架/结构体/字符串/数组/Set/Dictionary(Map)/数值封装/任意类型封装/日期
2014-05-18 00:24
316 查看
H:/Objective-C/OC_day7/01-结构体-main.m
H:/Objective-C/OC_day7/02-NSString-main.m
H:/Objective-C/OC_day7/03-NSArray-0-Person.h
H:/Objective-C/OC_day7/03-NSArray-1-Person.m
H:/Objective-C/OC_day7/03-NSArray-2-main.m
H:/Objective-C/OC_day7/04-遍历文件夹-计算代码行数-main.m
H:/Objective-C/OC_day7/05-NSSet-main.m
H:/Objective-C/OC_day7/06-NSDictionary-main.m
H:/Objective-C/OC_day7/07-NSNumber-main.m
H:/Objective-C/OC_day7/08-NSDate-main.m
H:/Objective-C/OC_day7/08-NSValue-main.m
// // main.m // 01-结构体 // // Created by apple on 13-8-12. // Copyright (c) 2013年 itcast. All rights reserved. // #import <Foundation/Foundation.h> int main() { /* NSRange(location length) NSPoint\CGPoint NSSize\CGSize NSRect\CGRect (CGPint CGSize) */ // 使用这些CGPointEqualToPoint、CGRectContainsPoint等函数的前提是添加CoreGraphics框架 // // NextStep Foundation // 比较两个点是否相同(x、y) BOOL b = CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10)); //CGRectEqualToRect(<#CGRect rect1#>, <#CGRect rect2#>) //CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>) // x (50, 150) y (40 , 90) BOOL b2 = CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(60, 45)); NSLog(@"%d", b2); return 0; } void point() { CGPoint p1 = NSMakePoint(10, 10); NSPoint p2 = CGPointMake(20, 20);// 最常用 NSSize s1 = CGSizeMake(100, 50); NSSize s2 = NSMakeSize(100, 50); CGSize s3 = NSMakeSize(200, 60); CGRect r1 = CGRectMake(0, 0, 100, 50); CGRect r2 = { {0, 0}, {100, 90}}; CGRect r3 = {p1, s2}; // 使用CGPointZero等的前提是添加CoreGraphics框架 CGRect r4 = {CGPointZero, CGSizeMake(100, 90)}; // CGSizeZero // CGRectZero // 表示原点 // CGPointZero == CGPointMake(0, 0) // 将结构体转为字符串 //NSString *str = NSStringFromPoint(p1); //NSString *str = NSStringFromSize(s3); NSString *str = NSStringFromRect(r1); NSLog(@"%@", str); // NSLog(@"x=%f, y=%f, width=%f, height=%f", r1.origin.x, r1.origin.y, r1.size.width, r1.size.height); } //CGRect myRect(CGFloat x, CGFloat y, CGFloat width, CGFloat height) //{ // CGRect rect; // rect.origin.x = x; // rect.origin.y = y; // rect.size.width = width; // rect.size.height = height; // // return rect; //} void range() { // @"i love oc" // love的范围 //NSRange r1 = {2, 4}; // 不用 //NSRange r2 = {.location = 2, .length = 4};// 不用 //NSRange r3 = NSMakeRange(2, 4); // 掌握 NSString *str = @"i love oc"; // 查找某个字符串在str中的范围 // 如果找不到,length=0,location=NSNotFound==-1 NSRange range = [str rangeOfString:@"java"]; NSLog(@"loc = %ld, length=%ld", range.location, range.length); }
H:/Objective-C/OC_day7/02-NSString-main.m
// // main.m // 02-NSString // // Created by apple on 13-8-12. // Copyright (c) 2013年 itcast. All rights reserved. // #import <Foundation/Foundation.h> /* NSString : 不可变字符串 NSMutableString : 可变字符串 */ int main() { NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"]; // 拼接内容到s1的后面 [s1 appendString:@" 11 12"]; // 获取is的范围 NSRange range = [s1 rangeOfString:@"is"]; [s1 deleteCharactersInRange:range]; NSString *s2 = [NSString stringWithFormat:@"age is 10"]; NSString *s3 = [s2 stringByAppendingString:@" 11 12"]; NSLog(@"s1=%@, s2=%@", s1, s2); return 0; } void stringExport() { // 字符串的导出 [@"Jack\nJack" writeToFile:@"/Users/apple/Desktop/my.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil]; NSString *str = @"4234234"; NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/my2.txt"]; [str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil]; } void stringCreate() { /* 1.字符串的创建 */ NSString *s1 = @"jack"; //NSString *s2 = [[NSString alloc] initWithString:@"jack"]; NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d", 10]; // C字符串 --> OC字符串 NSString *s4 = [[NSString alloc] initWithUTF8String:"jack"]; // OC字符串 --> C字符串 const char *cs = [s4 UTF8String]; // NSUTF8StringEncoding 用到中文就可以用这种编码 NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil]; // URL : 资源路径 // 协议头://路径 // file:// // ftp:// // http://weibo.com/a.png // http://www.baidu.com // NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/1.txt"]; NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/1.txt"]; NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; NSLog(@"s6=\n%@", s6); /* 一般都会有一个类方法跟对象方法配对 [NSURL URLWithString:<#(NSString *)#>]; [NSString stringWithFormat:@""]; [NSString stringWithContentsOfFile:<#(NSString *)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>]; */ }
H:/Objective-C/OC_day7/03-NSArray-0-Person.h
/* 作者:MJ 描述: 时间: 文件名:Person.h */ #import <Foundation/Foundation.h> @interface Person : NSObject @end
H:/Objective-C/OC_day7/03-NSArray-1-Person.m
/* 作者:MJ 描述: 时间: 文件名:Person.m */ #import "Person.h" @implementation Person @end
H:/Objective-C/OC_day7/03-NSArray-2-main.m
// // main.m // 03-NSArray // // Created by apple on 13-8-12. // Copyright (c) 2013年 itcast. All rights reserved. // #import <Foundation/Foundation.h> #import "Person.h" /* NSArray :不可变数组 NSMutableArray : 可变数组 */ int main() { // @[] 只创建不可变数组NSArray /* 错误写法 NSMutableArray *array = @[@"jack", @"rose"]; [array addObject:@"jim"]; */ //NSArray *array = @[@"jack", @"rose"]; return 0; } // 可变数组的基本使用 void use3() { 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); } // 遍历数组 void use2() { Person *p = [[Person alloc] init]; NSArray *array = @[p, @"rose", @"jack"]; // for (int i = 0; i<array.count; i++) // { // NSLog(@"%@", array[i]); // } // id obj代表着数组中的每一个元素 //int i = 0; // for (id obj in array) // { // // 找出obj元素在数组中的位置 // NSUInteger i = [array indexOfObject:obj]; // // NSLog(@"%ld - %@", i, obj); // //i++; // // if (i==1) // { // break; // } // } [array enumerateObjectsUsingBlock: // 每遍历到一个元素,就会调用一次block // 并且当前元素和索引位置当做参数传给block ^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%ld - %@", idx, obj); if (idx == 0) { // 停止遍历 *stop = YES; } }]; // void ^(myblock)(id, NSUInteger, BOOL *) = ^(id obj, NSUInteger idx, BOOL *stop) // { // NSLog(@"%ld - %@", idx, obj); // // // if (idx == 0) // { // // 停止遍历 // *stop = YES; // } // }; // // for (int i = 0; i<array.count; i++) // { // // 用来标记是否需要停止遍历 // BOOL isStop = NO; // // // 取出元素 // id obj = array[i]; // // myblock(obj, i, &isStop); // // // if (isStop) // { // break; // } // } } void use() { /* int a = 5; int ages[10] = {1, 90, 89, 17}; Person *p = [[Person alloc] init]; Person *persons[5] = {p, [[Person alloc] init]}; */ // OC数组不能存放nil值 // OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等 // 这个array永远是空数组 // NSArray *array = [NSArray array]; /* 1.NSArray的创建 */ 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 *array4 = @[@"jack", @"rose", @"4324324"]; /* 2.NSArray的元素个数 */ NSLog(@"%ld", array3.count); /* 3.NSArray中元素的访问 */ NSLog(@"%@", [array3 objectAtIndex:1]); //array3[1]; NSLog(@"%@", array3[0]); }
H:/Objective-C/OC_day7/04-遍历文件夹-计算代码行数-main.m
// // main.m // 04-计算代码行数 // // Created by apple on 13-8-12. // Copyright (c) 2013年 itcast. All rights reserved. // /* * 考察NSString、NSArray的使用 * NSFileManager */ #import <Foundation/Foundation.h> // 计算文件的代码行数 /* path : 文件的全路径(可能是文件夹、也可能是文件) 返回值 int :代码行数 */ NSUInteger codeLineCount(NSString *path) { // 1.获得文件管理者 NSFileManager *mgr = [NSFileManager defaultManager]; // 2.标记是否为文件夹 BOOL dir = NO; // 标记是否为文件夹 // 标记这个路径是否存在 BOOL exist = [mgr fileExistsAtPath:path isDirectory:&dir]; // 3.如果不存在,直接返回0 if(!exist) { NSLog(@"文件路径不存在!!!!!!"); return 0; } // 代码能来到着,说明路径存在 if (dir) { // 文件夹 // 获得当前文件夹path下面的所有内容(文件夹、文件) NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil]; // 定义一个变量保存path中所有文件的总行数 int count = 0; // 遍历数组中的所有子文件(夹)名 for (NSString *filename in array) { // 获得子文件(夹)的全路径 NSString *fullPath = [NSString stringWithFormat:@"%@/%@", path, filename]; // 累加每个子路径的总行数 count += codeLineCount(fullPath); } return count; } else { // 文件 // 判断文件的拓展名(忽略大小写) NSString *extension = [[path pathExtension] lowercaseString]; if (![extension isEqualToString:@"h"] && ![extension isEqualToString:@"m"] && ![extension isEqualToString:@"c"]) { // 文件拓展名不是h,而且也不是m,而且也不是c return 0; } // 加载文件内容 NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; // 将文件内容切割为每一行 NSArray *array = [content componentsSeparatedByString:@"\n"]; // 删掉文件路径前面的/Users/apple/Desktop/iOS课堂共享/0722课堂共享/ NSRange range = [path rangeOfString:@"/Users/apple/Desktop/iOS课堂共享/0722课堂共享/"]; NSString *str = [path stringByReplacingCharactersInRange:range withString:@""]; // 打印文件路径和行数 NSLog(@"%@ - %ld", str, array.count); return array.count; } } int main() { NSUInteger count = codeLineCount(@"/Users/apple/Desktop/iOS课堂共享/0722课堂共享"); NSLog(@"%ld", count); return 0; } void test() { NSString *str = @"jack\nrose\njim\njake"; [str writeToFile:@"/Users/apple/Desktop/abc.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil]; NSArray *array = [str componentsSeparatedByString:@"\n"]; for (NSString *line in array) { NSLog(@"%@", line); } //int count = codeLineCount(@"/Users/apple/Desktop/iOS课堂共享/0722课堂共享/0811/代码/04-block/04-block/main.m"); //NSLog(@"count=%d", count); }
H:/Objective-C/OC_day7/05-NSSet-main.m
// // main.m // 05-NSSet // // Created by apple on 13-8-12. // Copyright (c) 2013年 itcast. All rights reserved. // /* NSSet和NSArray的对比 1> 共同点 * 都是集合,都能存放多个OC对象 * 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举) * 本身都不可变,都有一个可变的子类 2> 不同点 * NSArray有顺序,NSSet没有顺序 */ #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); }
H:/Objective-C/OC_day7/06-NSDictionary-main.m
// // main.m // 06-NSDictionary // // Created by apple on 13-8-12. // Copyright (c) 2013年 itcast. All rights reserved. // /* 集合 1.NSArray\NSMutableArray * 有序 * 快速创建(不可变):@[obj1, obj2, obj3] * 快速访问元素:数组名[i] 2.NSSet\NSMutableSet * 无序 3.NSDictionary\NSMutableDictionary * 无序 * 快速创建(不可变):@{key1 : value1, key2 : value2} * 快速访问元素:字典名[key] */ #import <Foundation/Foundation.h> int main() { NSArray *persons = @[ @{@"name" : @"jack", @"qq" : @"432423423", @"books": @[@"5分钟突破iOS编程", @"5分钟突破android编程"]}, @{@"name" : @"rose", @"qq" : @"767567"}, @{@"name" : @"jim", @"qq" : @"423423"}, @{@"name" : @"jake", @"qq" : @"123123213"} ]; // // NSDictionary *jim = persons[2]; // NSString *bookName = persons[0][@"books"][1]; NSLog(@"%@", bookName); //NSArray *array = persons[0][@"books"]; //NSLog(@"%@", array); // 先取出1位置对应的字典 // 再取出字典中qq这个key对应的数据 //NSLog(@"%@", persons[1][@"qq"]); // NSLog(@"%@", jim); return 0; } void use4() { // 字典不允许有相同的key,但允许有相同的value(Object) // 字典的无序的 NSDictionary *dict = @{ @"address" : @"北京", @"name" : @"jack", @"name2" : @"jack", @"name3" : @"jack", @"qq" : @"7657567765"}; // NSArray *keys = [dict allKeys]; // // for (int i = 0; i<dict.count; i++) // { // NSString *key = keys[i]; // NSString *object = dict[key]; // // // NSLog(@"%@ = %@", key, object); // } [dict enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) { NSLog(@"%@ - %@", key, obj); // *stop = YES; }]; } void use3() { NSMutableDictionary *dict = @{@"name" : @"jack"}; [dict setObject:@"rose" forKey:@"name"]; } void use2() { NSMutableDictionary *dict = [NSMutableDictionary dictionary]; // 添加键值对 [dict setObject:@"jack" forKey:@"name"]; [dict setObject:@"北京" forKey:@"address"]; [dict setObject:@"rose" forKey:@"name"]; // 移除键值对 // [dict removeObjectForKey:<#(id)#>]; NSString *str = dict[@"name"]; //NSLog(@"%@", str); NSLog(@"%@", dict); //NSLog(@"%@", @[@"jack", @"rose"]); } void use() { /* 字典: key ----> value 索引 ----> 文字内容 里面存储的东西都是键值对 */ // NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"]; // NSArray *keys = @[@"name", @"address"]; // NSArray *objects = @[@"jack", @"北京"]; // NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; /* NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: @"jack", @"name", @"北京", @"address", @"32423434", @"qq", nil];*/ NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"}; // id obj = [dict objectForKey:@"name"]; id obj = dict[@"name"]; NSLog(@"%@", obj); // 返回的是键值对的个数 NSLog(@"%ld", dict.count); }
H:/Objective-C/OC_day7/07-NSNumber-main.m
// // main.m // 07-NSNumber // // Created by apple on 13-8-12. // Copyright (c) 2013年 itcast. All rights reserved. // #import <Foundation/Foundation.h> int main() { // @20 将 20包装成一个NSNumber对像 NSArray *array = @[ @{@"name" : @"jack", @"age" : @20}, @{@"name" : @"rose", @"age" : @25}, @{@"name" : @"jim", @"age" : @27} ]; // 将各种基本数据类型包装成NSNumber对象 @10.5; @YES; @'A'; // NSNumber对象 @"A"; // NSString对象 // 将age变量包装成NSNumber对象 int age = 100; @(age); //[NSNumber numberWithInt:age]; NSNumber *n = [NSNumber numberWithDouble:10.5]; int d = [n doubleValue]; int a = 20; // @"20" NSString *str = [NSString stringWithFormat:@"%d", a]; NSLog(@"%d", [str intValue]); return 0; } void test() { NSNumber *num = [NSNumber numberWithInt:10]; NSDictionary *dict = @{ @"name" : @"jack", @"age" : num }; NSNumber *num2 = dict[@"age"]; int a = [num2 intValue]; NSLog(@"%d" , a); }
H:/Objective-C/OC_day7/08-NSDate-main.m
// // main.m // 08-NSDate // // Created by apple on 13-8-12. // Copyright (c) 2013年 itcast. All rights reserved. // #import <Foundation/Foundation.h> int main() { // 09/10/2011 NSString *time = @"2011/09/10 18:56"; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyy/MM/dd HH:mm"; NSDate *date = [formatter dateFromString:time]; NSLog(@"%@", date); return 0; } void date2string() { 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); } void use() { // 创建一个时间对象 NSDate *date = [NSDate date]; // 打印出的时候是0时区的时间(北京-东8区) NSLog(@"%@", date); NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date]; // 从1970开始走过的秒数 NSTimeInterval seconds = [date2 timeIntervalSince1970]; // [date2 timeIntervalSinceNow]; }
H:/Objective-C/OC_day7/08-NSValue-main.m
// // main.m // 08-NSValue // // Created by apple on 13-8-12. // Copyright (c) 2013年 itcast. All rights reserved. // #import <Foundation/Foundation.h> // NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue int main() { // 结构体--->OC对象 CGPoint p = CGPointMake(10, 10); // 将结构体转为Value对象 NSValue *value = [NSValue valueWithPoint:p]; // 将value转为对应的结构体 // [value pointValue]; NSArray *array = @[value ]; // insert code here... // NSLog(@"这是哥修改过的东西6"); return 0; }
相关文章推荐
- OC_语法入门_day4_id类型/(带参数)构造方法/Category分类/类的本质/SEL类型
- 【Go入门教程4】变量(var),常量(const),内置基础类型(Boolean、数值 byte,int,rune、字符串、错误类型),分组,iota枚举,array(数值),slice(切片),map(字典),make/new操作,零值
- scala入门2(简介与基础语法2--数值类型)
- OC_语法入门_day2_封装/继承/多态/self/super
- 数据库存储过程基本库函数:字符串类型,数值类型,日期类型
- JavaScript语法入门系列(三) 基本数据类型及其对应对象类型
- 入门级问题。 VC ATL 封装 Delphi com 组件 pchar 类型转换。
- javascript学习笔记(十一)对表格进行排序(包括数值、字符串、日期等数据类型)
- vs2005入门 之 数据类型(日期类型)[视频]
- nodejs入门级基础(数据类型,最基本的语法详解)
- wp7 Page基类的使用,以及传入任意类型的参数封装
- Struts2使用OGNL表达式封装输入数据(直接封装Map类型)
- C++ string转任意数值类型
- mongodb入门-4 数据类型--日期、数组
- SqlServe零碎要点---sqlserver如何使用日期计算,DateTime类型的格式化以及语法格式等等。
- JavaScript语法入门系列(七) 类和对象(日期Date)
- 将数值类型(number)转换成日期类型(date)或字符类型(VARCHAR2)
- 在C#中将任意数值类型数据与字节数组相互转换的一个方法
- 【转】Apache CXF入门范例以及对传递List<Map>类型的疑惑
- XML简介Schema之 XSD 日期及时间数据类型 VS XSD 数值数据类型