Используйте NSKeyedArchiver (последнее предложение ссылок на пост Гаррета):
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
Обратите внимание, что все объекты array
должны соответствовать NSCoding
протоколу. Если это настраиваемые объекты, это означает, что вам нужно прочитать об объектах кодирования и декодирования .
Обратите внимание, что это создаст довольно трудный для чтения формат списка свойств, но может обрабатывать очень широкий спектр объектов. Если у вас очень простой массив (например, строки), вы можете использовать NSPropertyListSerialization, который создает немного более простой список свойств:
NSString *error;
NSData *data = [NSPropertyListSerialization dataFromPropertyList:array format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error];
Также существует константа формата XML, которую вы можете передать, если хотите, чтобы ее можно было читать по сети.
Я не уверен, что это поможет вам, но это ссылка для NSMutableArray на NSData .
источник
Я использовал этот код.
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];
источник
Ты можешь это сделать-
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.
источник
Swift:
let data = NSKeyedArchiver.archivedData(withRootObject: jsonArray) print(data)
источник