黑马程序员——foundation框架之NSNumber,NSDate,NSValue
2014-06-19 05:57
417 查看
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
NSNumber
NSNumber可以将基本数据类型包装起来,形成一个对象,这样就可以给其发送消息,装入NSArray中等等。
NSNumber * intNumber=[NSNumber numberWithInt:100];
NSNumber *floatNumber=[NSNUmber numberWithFloat:100.00];
int i=[intNumber intValue];
if([intNumber isEqualToNumber:floatNumber]) ....
NSNumber继承NSObject ,可以使用比较 compare: isEqual等消息
下面是MJ老师上课的代码
NSData
使用文件时,需要频繁地将数据读入一个临时存储区,它通常成为缓冲区。
NSData类提供了一种简单的方式,它用来设置缓冲区、将文件的内容读入缓冲区,或将缓冲区的内容写到一个文件。
对于32位应用程序,NSDATA缓存区最多可以存储2GB的数据。
我们既可定义不变缓冲区(NSData类),也可定义可变的缓冲区(NSMutableData类)。
下面代码展示了如何将文件的内容读入内存缓冲区,然后再将缓冲区的内容写入到另一个文件中。
类型转换 NSData -> NSString:
NSString *strData = [[NSString alloc]initWithData:fileData encoding:NSASCIIStringEncoding];
类型转换 NSString -> NSData:
NSData *fileData2 = [strData dataUsingEncoding:NSUTF8StringEncoding];
然后接上MJ老师上课的代码
NSValue
首先要明白的是NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue
并且我们在C/C++开发中常会用到结构体来帮助我们简单封装基本数据类型,在Objective-C中我们也可以使用结构体来完成数据类型的封装。同时,Cocoa Touch还提供了一个NSValue来帮助我们更好地在开发中使用结构体。
代码如下
还是要终结下自己在学习oc的过程中出现的各种问题,在接触oc之前还算有c语言的基础,但是对面向对象的基础一点也没有,因为之前自己一直不怎么喜欢java,所以就没学java导致现在在学习oc的过程中对面向对象的理解不够深刻,以至于很多简单的地方总是要理解很久才能够想通。oc的基础部分前前后后差不多学了一个多月的时间,比自己预计的时间要多一些,但是还好,自己感觉收获也挺多的,真心感谢MJ老师为我们认真的上课,以及论坛的小伙伴们,有什么问题都能够及时的帮助我,希望自己在接下来的日子能够更加深入的学习oc,也希望黑马程序员越办越好。
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
NSNumber
NSNumber可以将基本数据类型包装起来,形成一个对象,这样就可以给其发送消息,装入NSArray中等等。
NSNumber * intNumber=[NSNumber numberWithInt:100];
NSNumber *floatNumber=[NSNUmber numberWithFloat:100.00];
int i=[intNumber intValue];
if([intNumber isEqualToNumber:floatNumber]) ....
NSNumber继承NSObject ,可以使用比较 compare: isEqual等消息
下面是MJ老师上课的代码
<span style="font-size:14px;">#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); }</span>
NSData
使用文件时,需要频繁地将数据读入一个临时存储区,它通常成为缓冲区。
NSData类提供了一种简单的方式,它用来设置缓冲区、将文件的内容读入缓冲区,或将缓冲区的内容写到一个文件。
对于32位应用程序,NSDATA缓存区最多可以存储2GB的数据。
我们既可定义不变缓冲区(NSData类),也可定义可变的缓冲区(NSMutableData类)。
下面代码展示了如何将文件的内容读入内存缓冲区,然后再将缓冲区的内容写入到另一个文件中。
<span style="font-size:14px;">NSData *fileData; NSFileManager *fileManager = [[NSFileManager alloc]init]; fileData = [fileManager contentsAtPath:path]; [fileManager createFileAtPath:path2 contents:fileData attributes:nil]; //采用默认的属性值</span>
类型转换 NSData -> NSString:
NSString *strData = [[NSString alloc]initWithData:fileData encoding:NSASCIIStringEncoding];
类型转换 NSString -> NSData:
NSData *fileData2 = [strData dataUsingEncoding:NSUTF8StringEncoding];
然后接上MJ老师上课的代码
#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]; }
NSValue
首先要明白的是NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue
并且我们在C/C++开发中常会用到结构体来帮助我们简单封装基本数据类型,在Objective-C中我们也可以使用结构体来完成数据类型的封装。同时,Cocoa Touch还提供了一个NSValue来帮助我们更好地在开发中使用结构体。
代码如下
#import <Foundation/Foundation.h> int main() { // 结构体--->OC对象 CGPoint p = CGPointMake(10, 10); // 将结构体转为Value对象 NSValue *value = [NSValue valueWithPoint:p]; // 将value转为对应的结构体 // [value pointValue]; NSArray *array = @[value ]; // NSLog(@"这是哥修改过的东西6"); return 0; }至此所有的oc基础课程就已经基本看完了
还是要终结下自己在学习oc的过程中出现的各种问题,在接触oc之前还算有c语言的基础,但是对面向对象的基础一点也没有,因为之前自己一直不怎么喜欢java,所以就没学java导致现在在学习oc的过程中对面向对象的理解不够深刻,以至于很多简单的地方总是要理解很久才能够想通。oc的基础部分前前后后差不多学了一个多月的时间,比自己预计的时间要多一些,但是还好,自己感觉收获也挺多的,真心感谢MJ老师为我们认真的上课,以及论坛的小伙伴们,有什么问题都能够及时的帮助我,希望自己在接下来的日子能够更加深入的学习oc,也希望黑马程序员越办越好。
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
相关文章推荐
- 黑马程序员——Foundation框架入门:NSNumber,NSValue和NSDate
- 黑马程序员—— Foundation框架NSArray、NSSet、NSDictionary、NSNumber、NSDate、NSValue
- 黑马程序员——Foundation---NSSet,NSDictionary,NSNumber,NSDate,NSValue
- 黑马程序员—Foundation框架之NSFileManager、NSNumber与NSDate
- 黑马程序员——Foundation框架学习——OC结构体、字符串、OC集合、NSNumber,NSValue、OC时间对象
- 黑马程序员- IOS学习笔记-Foundation框架集合类、NSNumber、NSDate
- 黑马程序员--Foundation框架之--类其他常用的类:NSNumber,NSDate
- Foundation框架下的常用类(NSNumber, NSValue, NSDate,NSDateFormatter)
- 黑马程序员-OC学习笔记之Foundation框架NSNumber、NSValue和NSDate
- 黑马程序员-13-Foundation(NSNumber,NSDate,NSValue)
- 黑马程序员-OC学习笔记-----Foundation框架(集合、NSNumber、NSDate)
- 黑马程序员_Foundation_NSSet,NSDictionary,NSValue,NSDate,NSNumber
- 黑马程序员——Foundation框架——NSNumber类介绍和使用
- 黑马程序员_Foundation学习之NSSet、NSDictionary、NSNumber、NSValue、NSDate
- 黑马程序员——Foundation框架——NSDate、NSCalendar类介绍和使用
- OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)
- 黑马程序员-[OC语言] 第八篇:foundation框架之 NSFileManager、NSDate概述
- 黑马程序员--ios基础--oc-foundation--NSSet、NSDictionary、NSNumber、NSValue、NSDate
- 【黑马程序员】【Foundation框架】NSNumber、NSValue和NSData
- Foundation框架--- NSDate、NSNumber