Как конвертировать NSArray в NSData?



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



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

470   7  

7 ответов:

используйте NSKeyedArchiver (который является последним предложением сообщения Garrett links):

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

Swift:

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.

Comments

    Ничего не найдено.