3.NSNumber,NSValue,NSData,NSDate及简单数据解析

本文探讨了Objective-C与Swift两种编程语言在iOS开发领域的应用与区别,包括其核心特性、优缺点及实际案例分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.值对象 基本数据类型–>对象类型

NSNumber *number = [NSNumber numberWithInteger:10];//类方法
NSNumber *number1 = [[NSNumber alloc] initWithFloat:3.14];//实例方法
NSNumber *numb = @15;//字面量(int型)
NSInteger num = [number integerValue];//对象类型-->基本数据类型
NSString *str = @"22";
NSInteger num1 = [str integerValue];//含有NSInteger的字符串-->基本数据类型

2.NSValue作用是把结构体(NSRange,CGRect->

//结构体的.是访问成员变量,对象调用属性是点语法
NSRange range = {2,4};
NSValue *rValue = [NSValue valueWithRange:range];//结构体-->对象
NSRange range1 = [rValue rangeValue];//对象-->结构体
int a = 10;
int *p = &a;
NSValue *point = [NSValue valueWithPointer:p];//指针-->对象
int *p1 = [point pointerValue];//对象-->指针

3.NSData(子类NSMutableData可对该对象进行数据修改)用来包装数据,存储的是二进制数据,屏蔽数据之间的差异,比如文本,音频,图像等

NSString *str = @"beijing";
NSData *dataStr = [str dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@",dataStr);//--> <6265696a 696e67>
NSString *strData = [[NSString alloc] initWithData:dataStr encoding:NSUTF8StringEncoding];
NSLog(@"%@",strData);//-->beijing

4.date的相关获取方法

//+date获取的是零时区的时间((5,6,7,8,9)北京东八区)
NSDate *date = [NSDate date];
NSLog(@"%@",date);//-->2015-07-23 11:04:44 +0000
//获取一下当前所在的时区
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSLog(@"%@",zone);//-->Asia/Shanghai (GMT+8) offset 28800
//获取一下当前时区和0时区相差的秒数
NSInteger seconds = [zone secondsFromGMTForDate:date];
NSLog(@"%ld",seconds);//-->28800

//通过相差的秒数,能获取到现在的时间
NSDate *cocalDate = [NSDate dateWithTimeIntervalSinceNow:28800];//正数表示在当前时间之后
NSLog(@"%@",cocalDate);//-->2015-07-23 19:04:44 +0000
//明天这个时候的时间
NSDate *tomorrowDate = [NSDate dateWithTimeIntervalSinceNow:3600*32];
NSLog(@"%@",tomorrowDate);//-->2015-07-24 19:04:44 +0000
//昨天这个时候的时间
NSDate *yesterdayDate = [NSDate dateWithTimeIntervalSinceNow:-3600*16];//负数表示在当前时间之前
NSLog(@"%@",yesterdayDate);//-->2015-07-22 19:04:44 +0000
//时间间隔-->NSTimeInterval对应的是double类型
//计算两个对象的时间间隔
NSTimeInterval interval = [tomorrowDate timeIntervalSinceDate:date];
NSLog(@"%g",interval);//-->115200

5.日期和字符串的相关转换

//<1>NSDate --> NSString
NSDate *date = [NSDate date];
NSString *strDate = [NSString stringWithFormat:@"%@",date];
NSLog(@"%@",strDate);//-->2015-07-23 12:12:04 +0000

// 时间的格式:yyyy-MM-dd HH-mm-ss   ->(H:24小时制  h:12小时制)
//先设置一下时间的格式,要转换的时间要和格式相吻合
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"];//里面的-可以换成\,/,:

//通过把指定的时间直接转换成NSString,系统还会把它转换成当前的时间
NSString *stringDate = [formatter stringFromDate:date];
NSLog(@"%@",stringDate);//-->2015-07-23 20-12-04

//<2>NSString --> NSDate 字符串又会被系统自动减掉8小时
NSString *timeStr = @"2015-7-23 17-18-10";
NSDate *date1 = [formatter dateFromString:timeStr];
NSLog(@"%@",date1);//-->2015-07-23 09:18:10 +0000

6.对字典数组里面的内容进行数据解析

//NSString *path = [[NSBundle mainBundle] pathForResource:@"movielist.text" ofType:nil];
NSString *path = @"/Users/dlios/Desktop/shangke/OC/OC07-NSDate/OC07-NSDate/movielist.txt";
NSData *data = [NSData dataWithContentsOfFile:path];
NSMutableDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
//movielist.txt里面的部分内容
//{"reason":"success","result":[{"movieId":"216609","movieName":"诡八楼","pic_url":"http:\/\/v.juhe.cn\/movie\/picurl?2583083"},{"movieId":"216391","movieName":"摩登森林之美食总动员","pic_url":"http:\/\/v.juhe.cn\/movie\/picurl?2583246"},{"movieId":"28678","movieName":"原色深海","pic_url":"http:\/\/v.juhe.cn\/movie\/picurl?2583539"}],"error_code":0}
NSMutableArray *arr = dic[@"result"];
NSDictionary *movieDic = arr[1];
NSString *name = movieDic[@"movieName"];
//等价于上面的3行,目标是找到第二部影片名字
NSString *movieName = dic[@"result"][1][@"movieName"];
NSLog(@"%@",movieName);//-->摩登森林之美食总动员
//遍历所有的影片名字
for (NSDictionary *dic in arr) {
    NSLog(@"%@",dic[@"movieName"]);
}//-->诡八楼,摩登森林之美食总动员,原色深海
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值