文件加载与保存

本文详细介绍了iOS编程中关于文件加载与保存的操作,涵盖了属性列表、NSDate与NSData的转换、读写属性列表以及编码对象。重点讨论了NSDate的时间间隔计算、比较和描述方法,以及NSData在字符串与字符间的转换。同时,文章还提到了属性列表的写入文件操作和NSCoding协议在对象编码解码中的应用。

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



1.属性列表

属性列表类包括:

简写成plist

NSArray,NSDictionary,NSString,NSNumber,NSDate,NSData及它们的变体。


2.NSDate 与 NSData

NSDate 获取当前日期和时间,是自动释放的对象。

获取与当前时间相隔的时间差


+ (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;   

参数:

NSTimeInterval 是一个双精度参数,表示以秒为单位的时间间隔,正数为将来的时间,负数为过去的时间。

日期比较:

- (NSDate *)earlierDate:(NSDate *)anotherDate;//返回较早的日期

- (NSDate *)laterDate:(NSDate *)anotherDate;//返回较晚的日期

- (NSComparisonResult)compare:(NSDate *)other;

- (BOOL)isEqualToDate:(NSDate *)otherDate;//相同,返回yes

排序:

- (NSComparisonResult)compare:(NSDate *)other;

取时间间隔:

- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate;

- (NSTimeInterval)timeIntervalSinceNow;

- (NSTimeInterval)timeIntervalSince1970;

将时间表示成字符串:

- (NSString *)description;


-------------------------------------------------------------------------------

NSData


 //NSString 转换成NSData对象:

        NSData *xmldata = [@"tesedata" dataUsingEncoding:NSUTF8StringEncoding];

 //NSData 转换成NSString对象:

        NSString *result = [[NSString alloc]initWithData:dataencoding:NSUTF8StringEncoding];


 //NSData 转换成char

        char *test = [data bytes];

 //char转换成NSData

        Byte *tempData = malloc(sizeof(Byte)*16);

        

        NSData *content = [NSData dataWithBytes:tempData length:16];



3.读写属性列表

使用属性列表归档只针对属性列表类对象

写入文件:

集合属性列表类具有一个writetofile:atomically: 方法用语将属性列表写入文件

非集合属性列表类:也具有以上方法,但只能写出字符串



4.编码对象

NSCoder 是一个抽象类,定义了一些有用的方法来在对象与NSData之间转换。

实际使


NSKeyedArchiver

NSKeyedUnarchiver



哪些类可以直接使用NSCopying协议;哪些类需要自己实现该协议?


某些核心的基础类可以直接使用,其他类需要使用该协议,然后采用协议的类中,实现协议定义的方法(copywithzone);

哪些类可以直接使用NSCoding协议;哪些类需要自己实现该协议?

某些核心的基础类可以直接使用,其他类需要使用该协议,然后采用协议的类中,实现协议定义的方法();

(encodeWithCoder\initWithCoder)



调用编码方法:


本章总结:

掌握属性列表类的概念

掌握NSDate\NSData类的使用

掌握利用属性列表类的性质写入和读取文件

掌握使用NSCoding协议对对象进行编码,解码。

1.属性列表

属性列表类包括:

简写成plist

NSArray,NSDictionary,NSString,NSNumber,NSDate,NSData及它们的变体。


2.NSDate 与 NSData

NSDate 获取当前日期和时间,是自动释放的对象。

获取与当前时间相隔的时间差


+ (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;   

参数:

NSTimeInterval 是一个双精度参数,表示以秒为单位的时间间隔,正数为将来的时间,负数为过去的时间。

日期比较:

- (NSDate *)earlierDate:(NSDate *)anotherDate;//返回较早的日期

- (NSDate *)laterDate:(NSDate *)anotherDate;//返回较晚的日期

- (NSComparisonResult)compare:(NSDate *)other;

- (BOOL)isEqualToDate:(NSDate *)otherDate;//相同,返回yes

排序:

- (NSComparisonResult)compare:(NSDate *)other;

取时间间隔:

- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate;

- (NSTimeInterval)timeIntervalSinceNow;

- (NSTimeInterval)timeIntervalSince1970;

将时间表示成字符串:

- (NSString *)description;


-------------------------------------------------------------------------------

NSData


 //NSString 转换成NSData对象:

        NSData *xmldata = [@"tesedata" dataUsingEncoding:NSUTF8StringEncoding];

 //NSData 转换成NSString对象:

        NSString *result = [[NSString alloc]initWithData:dataencoding:NSUTF8StringEncoding];


 //NSData 转换成char

        char *test = [data bytes];

 //char转换成NSData

        Byte *tempData = malloc(sizeof(Byte)*16);

        

        NSData *content = [NSData dataWithBytes:tempData length:16];



3.读写属性列表

使用属性列表归档只针对属性列表类对象

写入文件:

集合属性列表类具有一个writetofile:atomically: 方法用语将属性列表写入文件

非集合属性列表类:也具有以上方法,但只能写出字符串



4.编码对象

NSCoder 是一个抽象类,定义了一些有用的方法来在对象与NSData之间转换。

实际使


NSKeyedArchiver

NSKeyedUnarchiver



哪些类可以直接使用NSCopying协议;哪些类需要自己实现该协议?


某些核心的基础类可以直接使用,其他类需要使用该协议,然后采用协议的类中,实现协议定义的方法(copywithzone);

哪些类可以直接使用NSCoding协议;哪些类需要自己实现该协议?

某些核心的基础类可以直接使用,其他类需要使用该协议,然后采用协议的类中,实现协议定义的方法();

(encodeWithCoder\initWithCoder)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值