Как преобразовать NSArray в NSData?

Может кто-нибудь сказать мне, как конвертироватьNSArray дляNSData? у меня естьNSArray, Мне нужно отправить егоNSInputStream, Для этого мне нужно преобразоватьNSArray для .NSData

Пожалуйста, помогите мне, яЯ застрял здесь.

Ответы на вопрос(7)

Вы можете сделать это-

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)
Решение Вопроса

Используйте NSKeyedArchiver (который является последним предложением поста ссылки Гарретта):

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];

Обратите внимание, что все объекты вarray должен соответствоватьNSCoding протокол. Если это пользовательские объекты, то это означает, что вам нужно прочитатьКодирование и декодирование объектов.

Обратите внимание, что это создаст довольно трудно читаемый формат списка свойств, но может обрабатывать очень широкий диапазон объектов. Если у вас очень простой массив (например, строки), вы можете использовать NSPropertyListSerialization, который создает немного более простой список свойств:

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

Там'также константу формата XML, которую вы можете передать, еслиЯ предпочел бы быть читаемым на проводе.

 Shivaay13 февр. 2014 г., 16:12
+1 за лучший ответ и большое спасибо.

Я не уверен, поможет ли это вам, но этоссылка дляNSMutableArray to NSData.

 satish17 авг. 2009 г., 07:05
Спасибо за быстрый ответ, я проверил это раньше, не очень помог.

Я использовал этот код.

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

На несколько связанной ноте, здесьКак преобразовать NSData обратно в NSArray:

NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data]
 Sean05 нояб. 2013 г., 17:58
Убедитесь, что этоs NSKeyedUnarchiver, а не NSKeyedArchiver. Может быть легко сделать ошибку при использовании автозаполнения.
 Scott D05 нояб. 2014 г., 19:08
Этот ответ в сочетании с выбранным ответом сверху должен быть достаточным для архивирования / разархивирования любого совместимого объекта в / из NSData

Ваш ответ на вопрос