Iphone 如何将NSArray转换为NSData?
谁能告诉我如何将Iphone 如何将NSArray转换为NSData?,iphone,Iphone,谁能告诉我如何将NSArray转换为NSData?我有一个NSArray。我需要将其发送到NSInputStream。为此,我需要将NSArray转换为NSData 请帮帮我,我被困在这里。我不确定这是否对你有帮助,但这是一个链接。使用NSKeyedArchiver(这是post Garrett链接的最后一句话): 请注意,array中的所有对象必须符合NSCoding协议。如果这些是自定义对象,则意味着您需要仔细阅读 请注意,这将创建一个相当难读取的属性列表格式,但可以处理范围非常广泛的对象。
NSArray
转换为NSData
?我有一个NSArray
。我需要将其发送到NSInputStream
。为此,我需要将NSArray
转换为NSData
请帮帮我,我被困在这里。我不确定这是否对你有帮助,但这是一个链接。使用NSKeyedArchiver(这是post Garrett链接的最后一句话): 请注意,
array
中的所有对象必须符合NSCoding
协议。如果这些是自定义对象,则意味着您需要仔细阅读
请注意,这将创建一个相当难读取的属性列表格式,但可以处理范围非常广泛的对象。如果您有一个非常简单的数组(例如字符串),则可能需要使用NSPropertyListSerialization,这将创建一个稍微简单一点的属性列表:
NSString *error;
NSData *data = [NSPropertyListSerialization dataFromPropertyList:array format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error];
还有一个XML格式常量,如果您希望它在线路上可读,您可以传递它。在一个相关的注释中,以下是如何将NSData转换回NSArray:
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data]
你可以这样做-
NSArray *array= [NSArray array];
NSData *dataArray = [NSKeyedArchiver archivedDataWithRootObject:array];
我用了这个密码
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];
在iOS 9+中,请使用以下命令:
NSArray *array = [[NSArray alloc] init];
NSData *data = [NSPropertyListSerialization dataWithPropertyList:array format:NSPropertyListBinaryFormat_v1_0 options:0 error:nil];
iOS 8中不推荐使用此版本的旧版本。Swift:
let data = NSKeyedArchiver.archivedData(withRootObject: jsonArray)
print(data)
感谢您的快速回复,我之前已经检查过,但没有太大帮助。请确保它是NSKEYEDANRCHIVER而不是NSKeyedArchiver。使用“自动完成”时很容易出错。此答案加上上面选择的答案应足以将任何兼容对象存档/取消存档到NSData或从NSData存档/取消存档
let data = NSKeyedArchiver.archivedData(withRootObject: jsonArray)
print(data)