簡體   English   中英

如何將NSArray轉換為NSData?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM