precio - iphone xr
Cómo convertir NSArray a NSData? (7)
En iOS 9+ usa esto por favor:
NSArray *array = [[NSArray alloc] init];
NSData *data = [NSPropertyListSerialization dataWithPropertyList:array format:NSPropertyListBinaryFormat_v1_0 options:0 error:nil];
La versión anterior de esto quedó obsoleta en iOS 8.
¿Alguien puede decirme cómo convertir un NSArray a un NSData? Tengo un NSArray. Necesito enviarlo a un NSInputStream. Para hacer eso, necesito convertir el NSArray a un NSData. Por favor, ayúdenme, estoy atrapado aquí.
En una nota algo relacionada, así es como convertirías el NSData a un NSArray:
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data]
No estoy seguro si esto lo ayudará, pero es un enlace para NSMutableArray a NSData .
Puedes hacerlo-
NSArray *array= [NSArray array];
NSData *dataArray = [NSKeyedArchiver archivedDataWithRootObject:array];
Swift:
let data = NSKeyedArchiver.archivedData(withRootObject: jsonArray)
print(data)
Usé este 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];
Use NSKeyedArchiver (que es la última frase de los enlaces de Garrett):
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
Tenga en cuenta que todos los objetos en la array
deben cumplir con el protocolo NSCoding
. Si se trata de objetos personalizados, significa que debe leer sobre Codificación y Descodificación de Objetos .
Tenga en cuenta que esto creará un formato de lista de propiedades bastante difícil de leer, pero puede manejar una amplia gama de objetos. Si tiene una matriz muy simple (cadenas, por ejemplo), puede usar NSPropertyListSerialization, que crea una lista de propiedades más simple:
NSString *error;
NSData *data = [NSPropertyListSerialization dataFromPropertyList:array format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error];
También hay una constante de formato XML que puede pasar si prefiere que sea legible por cable.