[英]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.