iOS NSData与其他类型互转

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS NSData与其他类型互转相关的知识,希望对你有一定的参考价值。

参考技术A NSString -> NSData

NSData -> NSString

char -> NSData

NSData -> char

UIImage -> NSData

NSData -> UIImage

NSDictionary -> NSData

NSData -> NSDictionary

NSArray 同 NSDictionary,略。

注:

将继承自NSObject的自定义类转换为NSData,必须遵循NSCoding协议:

如下:

ios 保存在 plist 与保存 nsdata

【中文标题】ios 保存在 plist 与保存 nsdata【英文标题】:ios saving in plist vs saving with nsdata 【发布时间】:2012-04-17 17:34:37 【问题描述】:

我正在尝试找出保存数据的最佳方式。

像这样将数据保存到 plist 是否重要

NSString *error;
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"yourFile.plist"];
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:rootObj
                                                               format:NSPropertyListXMLFormat_v1_0
                                                     errorDescription:&error];
if(plistData) 
  [plistData writeToFile:plistPath atomically:YES];

else 
  NSLog(@"Error : %@",error);
  [error release];

或通过使用 NSData

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:FILE_NAME];

[myArray writeToFile:filePath atomically:YES];

我正在处理小型 XML 文件(我将其解析为 NSDictionaries)和大型 MP4 视频。关于我应该使用这两种文件存储方法中的哪一种,有什么建议吗?谢谢

【问题讨论】:

【参考方案1】:

我会选择[myArray writeToFile:filePath atomically:YES];(快速、简单、代码更少) 但仅当您的NSArrayNSDictionaries 仅包含非自身对象时(仅包含NSNumberNSStringNSArray 等)。

如果您使用NSPropertyListSerialization,您可能应该使用选项NSPropertyListBinaryFormat_v1_0。它速度更快,文件大小更小。

但是您还需要考虑解析 XML 然后存储到 XML Plist 中是否有意义。 :) 是的。这很有意义,因为这样您就可以更轻松地处理它们。

您还可以考虑解析您的 XML 并将其存储在 CoreData 数据库中。然后它使查询更加容易。

MP4 视频我也会存储在 NSDocumentDirectory 中。

【讨论】:

以上是关于iOS NSData与其他类型互转的主要内容,如果未能解决你的问题,请参考以下文章

ios中将nsdata类型的数据放到字典里,在封装成json可以吗

进制转换

spring类型转换器(三)

Java中Date类型与String类型互转

goLang实现不同类型的切片间互转

Cupy与Numpy的数据类型互转