NSNumber * intNumber=[NSNumber numberWithInt:100];
NSNumber *floatNumber=[NSNUmber numberWithFloat:100.00];
int i=[intNumber intValue];
if([intNumber isEqualToNumber:floatNumber]) ....
<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,也希望黑马程序员越办越好。