Come convertire NSArray in NSData?

Qualcuno può dirmi come convertire un NSArray in un NSData ? Ho un NSArray . Devo inviarlo a un NSInputStream . Per farlo ho bisogno di convertire NSArray in un NSData .

Per favore aiutami, sono bloccato qui.

Usa NSKeyedArchiver (che è l’ultima frase dei link Garrett post):

 NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array]; 

Si noti che tutti gli oggetti array devono essere conformi al protocollo NSCoding . Se si tratta di oggetti personalizzati, significa che è necessario leggere gli oggetti di codifica e decodifica .

Si noti che questo creerà un formato di elenco di proprietà abbastanza difficile da leggere, ma in grado di gestire una gamma molto ampia di oggetti. Se si dispone di un array molto semplice (stringhe, ad esempio), è ansible utilizzare NSPropertyListSerialization, che crea un elenco di proprietà un po ‘più semplice:

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

C’è anche una costante in formato XML che puoi passare se preferisci che sia leggibile sul filo.

Su una nota alquanto correlata, ecco come convertire NSData in un NSArray:

 NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data] 

Non sono sicuro che questo ti aiuterà, ma è un collegamento per NSMutableArray a NSData .

Puoi farlo-

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

Ho usato questo codice.

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

Swift:

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

In iOS 9+ usa questo per favore:

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

La versione precedente di questo era obsoleta in iOS 8.