簡介
NSData是用來包裝數據的,NSData存儲的是二進制數據,屏蔽了數據之間的差異,文本、音頻、圖像等數據都可用NSData來存儲。在多媒體開發時,比較常用,例如拼接音頻、圖片。
用法
-
NSString
與NSData
NSString -> NSData
NSString *aString = @"1234abcd";
NSData *aData = [aString dataUsingEncoding: NSUTF8StringEncoding];
NSData -> NSString
NSString *aString = [[NSString alloc] initWithData:adata encoding:NSUTF8StringEncoding]; -
NSData
與Byte
NSData -> Byte
NSString *testString = @"1234567890";
NSData *testData = [testString dataUsingEncoding: NSUTF8StringEncoding];
Byte *testByte = (Byte *)[testData bytes];
Byte --> NSData
Byte byte[] = {0,1,2,3,4,5,6,7};
NSData *adata = [[NSData alloc] initWithBytes:byte length:8]; -
NSData
與UIImage
NSData --> UIImage
UIImage *aImage = [UIImage imageWithData: imageData];
//例:從本地文件沙盒中取圖片并轉換為NSData
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *name = [NSString stringWithFormat:@"ceshi.png"];
NSString *finalPath = [path stringByAppendingPathComponent:name];
NSData *imageData = [NSData dataWithContentsOfFile: finalPath];
UIImage *aimage = [UIImage imageWithData: imageData];
UIImage-> NSData
NSData *imageData = UIImagePNGRepresentation(aimae); -
NSData
與NSMutableData
NSData --> MSMutableData
NSData *data=[[NSData alloc]init];
NSMutableData *mData=[[NSMutableData alloc]init];
mData=[NSData dataWithData:data];
注意
在進行網絡數據通信的時候,經常會遇到NSData類型的數據。在該數據是dictionary結構的情況下,系統沒有提供現成的轉換成NSDictionary的方法,為此可以通過Category對NSDictionary進行擴展,以支持從NSData到NSDictionary的轉換。聲明和實現如下:
+ (NSDictionary *)dictionaryWithContentsOfData:(NSData *)data{ NSDictionary *content = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:NULL]; return content; }