您的位置:首页 > 其它

NSData数据类型的讲解

2015-08-18 16:47 309 查看
NSData,数据,当我们需要把一些信息写入到文件里或发送到网络上,我们需要把这些数据转换下,变成纯粹的0、1字符流

也就是网络中要传数据的的时候,我们通常会用相应的NSData的数据来进行存储。

1、 NSData 与 NSString: //转成UTF8的数据

NSString * str = @"hello, world!";

NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];

//NSString转换成NSData类型

NSString * neswStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

//将Data数据转化为字符串

2. NSData 与 UIImage

NSData->UIImage

UIImage *aimage = [UIImage imageWithData: imageData];



//例:从本地文件沙盒中取图片并转换为NSData

NSData *imageData = [NSData dataWithContentsOfFile: finalPath];

// finalPath为获取图片的路径,获取图片的数据

UIImage *aimage = [UIImage imageWithData: imageData];

//将图片的数据转化为图片

3.NSData与NSArray NSDictionary

+(NSString *)getLocalFilePath:(NSString *) fileName

{

return [NSString stringWithFormat:@"%@/%@%@", NSHomeDirectory(),@“Documents”,fileName];

}

包括将NSData写进Documents目录,从Documents目录读取数据

在进行网络数据通信的时候,经常会遇到NSData类型的数据。

在该数据是dictionary结构的情况下,系统没有提供现成的转换成NSDictionary的方法,为此可以通过Category对NSDictionary进行扩展,以支持从NSData到NSDictionary的转换。

下面是在NSdictionary中添加转化为NSData的方法。

+ (NSDictionary *)dictionaryWithContentsOfData:(NSData *)data {

CFPropertyListRef list = CFPropertyListCreateFromXMLData(kCFAllocatorDefault, (CFDataRef)data, kCFPropertyListImmutable, NULL);

if(list == nil) return nil;

if ([(id)list isKindOfClass:[NSDictionary class]]) {

return [(NSDictionary *)list autorelease];

}

else {

CFRelease(list);

return nil;

}

}

NSData生成:

NSDictionary *dic =[NSDictionary dictionaryWithObject:@"hello" forKey:@"KEY"];

NSData *d = [NSKeyedArchiver archivedDataWithRootObject:dic];

从文件生成NSData:

NSBundle *bundle = [NSBundle mainBundle];

NSString *path = [bundle pathForResource:@"hello" ofType:@"png"];

NSData *d = [[NSData alloc] initWithContentsOfFile: path];

取得元素长度:

int i = [d length];

NSData型转成NSDictionary型:

NSDictionary *reverse = [NSKeyedUnarchiver unarchiveObjectWithData: d];

4.NSData与NSDate

//函数作用 :date根据formatter转换成string

+(NSString*)dateToString:(NSString *)formatter date:(NSDate *)date

{

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];

[dateFormatter setDateFormat:formatter];

return[dateFormatter stringFromDate:date];

}

//函数作用 :string类型的时间戳转换成时间

+(NSString*)dateStringToString:(NSString *)dateStr

{

if ([dateStr isKindOfClass:[NSNull class]]) {

return nil;

}

else{

NSInteger time = [dateStr intValue];

NSDate *date = [NSDate dateWithTimeIntervalSince1970:time];

NSString *timestr = [NSString stringWithFormat:@"%@",date];

NSRange rang;

rang.location = 0;

rang.length = 10;

NSString *needtime = [timestr substringWithRange:rang];

return needtime;

}

}

//函数作用 :将日期从原格式转换成需要的格式

+(NSString*)convertDateFormatter:(NSString*)sourceFormatter

targetFormatter:(NSString*)targetFormatter

dateString:(NSString*)dateString

{

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];

[dateFormatter setDateFormat:sourceFormatter];

NSDate *date = [dateFormatter dateFromString:dateString];

[dateFormatter setDateFormat:targetFormatter];

return[dateFormatter stringFromDate:date];

}

//函数作用 :将日期字符串转换成date

+(NSDate *)stringToDate:(NSString *)formatter dateString:(NSString *)dateString{

NSDateFormatter *dateFormatter= [[[NSDateFormatter alloc] init] autorelease];

[dateFormatter setDateFormat:formatter];

return [dateFormatter dateFromString:dateString];

}

//时间戳转换成时间

NSInteger time = [[dic objectForKey:@"press_date"] intValue];

NSDate *date = [NSDate dateWithTimeIntervalSince1970:time];

NSString *timestr = [NSString stringWithFormat:@"%@",date];

NSRange rang;

rang.location = 0;

rang.length = 10;

NSString *needtime = [timestr substringWithRange:rang];

sh
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: