[英]How to convert NSArray to NSData?
谁能告诉我如何将NSArray
转换为NSData
? 我有一个NSArray
。 我需要将它发送到NSInputStream
。 为此,我需要将NSArray
转换为NSData
。
请帮助我,我被困在这里。
使用NSKeyedArchiver(这是Garrett帖子的最后一句话):
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
请注意, array
中的所有对象必须符合NSCoding
协议。 如果这些是自定义对象,那么这意味着您需要阅读编码和解码对象 。
请注意,这将创建一个相当难以阅读的属性列表格式,但可以处理各种各样的对象。 如果你有一个非常简单的数组(例如字符串),你可能想要使用NSPropertyListSerialization,这会创建一个更简单的属性列表:
NSString *error;
NSData *data = [NSPropertyListSerialization dataFromPropertyList:array format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error];
如果您希望它在线上可读,那么您还可以传递XML格式常量。
在某种程度上相关的说明,这里是如何将NSData转换回NSArray:
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data]
我不确定这是否会对您有所帮助,但它是NSMutableArray与NSData的链接。
我用过这段代码。
NSError *error;
NSMutableData *jsonData = [[NSJSONSerialization dataWithJSONObject:yourDemoArray
options:0 // Pass 0 if you don't care about the readability of the generated string
error:&error] copy];
你可以这样做-
NSArray *array= [NSArray array];
NSData *dataArray = [NSKeyedArchiver archivedDataWithRootObject:array];
在iOS 9+中使用此请:
NSArray *array = [[NSArray alloc] init];
NSData *data = [NSPropertyListSerialization dataWithPropertyList:array format:NSPropertyListBinaryFormat_v1_0 options:0 error:nil];
在iOS 8中不推荐使用旧版本。
斯威夫特:
let data = NSKeyedArchiver.archivedData(withRootObject: jsonArray)
print(data)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.