How to convert NSArray to NSData?
iphone
Solution
Use NSKeyedArchiver (which is the last sentence of the post Garrett links):
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
Note that all the objects in `array` must conform to the `NSCoding` protocol. If these are custom objects, then that means you need to read up on Encoding and Decoding Objects.
Note that this will create a fairly hard-to-read property list format, but can handle a very wide range of objects. If you have a very simple array (strings for instance), you may want to use NSPropertyListSerialization, which creates a bit simpler property list:
NSString *error;
NSData *data = [NSPropertyListSerialization dataFromPropertyList:array format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error];
There's also an XML format constant you can pass if you'd rather it be readable on the wire.
Problem
Can anyone tell me how to convert an `NSArray` to an `NSData`? I have an `NSArray`. I need to send it to an `NSInputStream`. In order to do that I need to convert the `NSArray` to an `NSData`. Please help me, I'm stuck here.