Como converter NSArray para NSData?

Alguém pode me dizer como converter um NSArray para um NSData ? Eu tenho um NSArray . Eu preciso enviá-lo para um NSInputStream . Para fazer isso eu preciso converter o NSArray para um NSData .

Por favor me ajude, estou preso aqui.

   

Use NSKeyedArchiver (que é a última frase dos links do post Garrett):

 NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array]; 

Observe que todos os objects na array devem estar em conformidade com o protocolo NSCoding . Se estes são objects personalizados, isso significa que você precisa ler sobre codificação e decodificação de objects .

Observe que isso criará um formato de lista de propriedades razoavelmente difícil de ler, mas poderá manipular uma ampla variedade de objects. Se você tem um array muito simples (strings por exemplo), você pode querer usar NSPropertyListSerialization, que cria uma lista de propriedades um pouco mais simples:

 NSString *error; NSData *data = [NSPropertyListSerialization dataFromPropertyList:array format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error]; 

Há também uma constante de formato XML que você pode passar se preferir que seja legível no fio.

Em uma nota relacionada, aqui está como você converteria o NSData de volta para um NSArray:

 NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data] 

Não tenho certeza se isso irá ajudá-lo, mas é um link para um NSMutableArray para NSData .

Você consegue fazer isso-

 NSArray *array= [NSArray array]; NSData *dataArray = [NSKeyedArchiver archivedDataWithRootObject:array]; 

Eu usei esse código.

  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]; 

Rápido :

 let data = NSKeyedArchiver.archivedData(withRootObject: jsonArray) print(data) 

No iOS 9+, use isso, por favor:

 NSArray *array = [[NSArray alloc] init]; NSData *data = [NSPropertyListSerialization dataWithPropertyList:array format:NSPropertyListBinaryFormat_v1_0 options:0 error:nil]; 

A versão mais antiga disso foi descontinuada no iOS 8.