블루투스를 사용하여 2 개의 장치간에 데이터를 전송하려고합니다. 사용자 지정 NSObject를 NSData로 변환하려고합니다.사용자 지정 NSObject를 NSData로 변환
받은 NSData를 사용자 지정 NSObject로 디코딩하는 가장 좋은 방법은 무엇입니까?
감사합니다!
블루투스를 사용하여 2 개의 장치간에 데이터를 전송하려고합니다. 사용자 지정 NSObject를 NSData로 변환하려고합니다.사용자 지정 NSObject를 NSData로 변환
받은 NSData를 사용자 지정 NSObject로 디코딩하는 가장 좋은 방법은 무엇입니까?
감사합니다!
NSCoding
을 사용해야합니다. NSCoding
은 두 가지 방법, 즉 initWithCoder:
및 encodeWithCoder:
을 사용하는 간단한 프로토콜입니다. NSCoding
을 따르는 클래스는 디스크에 보관하거나 네트워크를 통해 배포 할 수있는 데이터로 serialize 및 deserialize 할 수 있습니다.
NSCoding/NSKeyedArchiver. 다음은 NSCoding
의 자습서입니다.
보관
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:YourClass];
보관 취소
YourClass *objYourClass = [NSKeyedUnarchiver unarchiveObjectWithData:data];
또한 내 answer을 참조 할 수 있습니다. 먼저 bean 클래스를 생성하고 에서 bean 클래스 객체와 Unarchive bean 클래스 객체로부터 NSData
을 아카이브 할 수 있다면 initWithCoder:
과 encodeWithCoder:
을 구현해야합니다.
내 아주 간단한 대답
먼저 우리가 NSObject.m에서 encodeWithCoder와 initWithCoder을 구현해야 내가 NSObject의 Class.For 예 2 개 데이터 (사용자 이름 및 암호)가 그 전에 내가 this.You 이해할 수 설정
- (void)encodeWithCoder:(NSCoder *)encoder
{
//Encode properties, other class variables, etc
[encoder encodeObject:@"Dev" forKey:@"username"];
[encoder encodeObject:@"[email protected]" forKey:@"password"];
}
- (id)initWithCoder:(NSCoder *)decoder
{
if((self = [super init]))
{
//decode properties, other class vars
userName = [decoder decodeObjectForKey:@"username"];
passWord = [decoder decodeObjectForKey:@"password"];
}
return self;
}
그런 ViewController.m에서
NSObjectClass *className = [[NSObjectClass alloc]init];
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:className];
[currentDefaults setObject:data forKey:@"DATA"];
[currentDefaults synchronize];
저장
들어 `정의 : 상세 정보 내
ANSWER 당신은`initWithJSON를 클래스 준수 NSCoding 확인하고`NSKeyedArchiver`, 또는 JSON으로 번역을 사용 (그리고 만들 수
를 들어
검색 init) 등 – Larme