itsource

NSA ray를 NSData로 변환하는 방법은 무엇입니까?

mycopycode 2023. 7. 31. 21:21
반응형

NSA ray를 NSData로 변환하는 방법은 무엇입니까?

누가 변환하는 방법을 알려줄 수 있습니까?NSArray완전히NSData나는 있습니다.NSArray저는 그것을 다른 사람에게 보내야 합니다.NSInputStream그러기 위해서는 변환이 필요합니다.NSArray완전히NSData.

제발 도와주세요, 제가 여기 갇혔어요.

NSKidedArchiver(Garrett 게시 링크의 마지막 문장)를 사용합니다.

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];

의 모든 개체는array다음을 준수해야 합니다.NSCoding의전이러한 개체가 사용자 지정 개체인 경우 인코딩 및 디코딩 개체를 자세히 읽어야 합니다.

이렇게 하면 상당히 읽기 어려운 속성 목록 형식이 생성되지만 매우 광범위한 개체를 처리할 수 있습니다.매우 단순한 배열(예: 문자열)을 사용하는 경우 NSPropertyListSerialization을 사용하면 다음과 같이 조금 더 간단한 속성 목록을 만들 수 있습니다.

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

또한 유선에서 읽을 수 있도록 하려면 XML 형식 상수를 전달할 수 있습니다.

NSData를 다시 NSRray로 변환하는 방법은 다음과 같습니다.

NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data]

이 코드를 사용했습니다.

 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)

할 수 있어요

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에서 더 이상 사용되지 않았습니다.

스위프트 5

let data = try! NSKeyedArchiver.archivedData(withRootObject: array, requiringSecureCoding: true)

언급URL : https://stackoverflow.com/questions/1286212/how-to-convert-nsarray-to-nsdata

반응형