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

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

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

Используйте NSKeyedArchiver (это последнее предложение ссылок Post Garrett):

 NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array]; 

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

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

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

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

В некоторой части примечания, вот как вы преобразовали NSData обратно в NSArray:

 NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data] 

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

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

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

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

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

Быстро:

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

В iOS 9+ используйте это, пожалуйста:

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

Старая версия этого устарела в iOS 8.

  • Пользовательская клавиатура iPhone
  • Как разбирать объект JSON в iPhone SDK (XCode) с помощью JSON-Framework
  • Отключение функции скриншотов iPhone
  • Как динамически изменять размер UITableViewCell
  • Как изменить высоту UIPickerView
  • Отключите клавиатуру iphone
  • Самый простой способ поддержки нескольких ориентаций? Как загрузить пользовательский NIB, когда приложение находится в Landscape?
  • Нажмите ViewController справа налево с помощью UINavigationController
  • Как сделать дополнительный просмотр float в UICollectionView в виде заголовков секций в обычном стиле UITableView
  • Ошибка с NSJSONSerialization - Недопустимый тип записи JSON (меню)
  • NSDateFormatter с 24 часами
  • Interesting Posts

    Android Studio, неожиданно возникла проблема с драйвером GPU при запуске эмулятора

    Возможно ли / хорошая практика использовать один и тот же закрытый ключ для двух серверов для входа без пароля с одного и того же рабочего места / локального сервера?

    Как установить оболочку в Mac OS X?

    Преобразование многих утверждений «если еще» в более чистый подход

    Как реализовать Android Pull-to-Refresh

    Как добавить 2 целых числа произвольного размера в C ++?

    Не удается получить доступ к избранным веб-сайтам в Linux (но может быть в Windows)

    Удаление руткита из MBR .. без форматирования?

    Как сохранить константу ключа реестра Windows?

    Nexus 7 не отображается как медиа-устройство (MTP)

    Почему при использовании функции Non-Random IV с режимом CBC существует уязвимость?

    Почему InputStream # read () возвращает int, а не байт?

    Цепочные iteratorы для C ++

    Домашняя сеть с адаптерами Powerline, беспроводным маршрутизатором и точкой беспроводного доступа

    В чем преимущество использования $ () вместо обратных ссылок в сценариях оболочки?

    Давайте будем гением компьютера.