applicationWillTerminate
에 저장을 구현했으며 applicationWillFinishLoading
에로드했습니다. 완전한 개체 트리가 있으며 모두 NSCoding
프로토콜을 구현하며 입력 한 유형을 확인했습니다.보관/보관 결과를 initForReadingWithData로 저장합니다. 이해할 수없는 보관 파일
클래스 중 하나는 NSMutableData
에서 NSKeyedArchive
까지도 저장하며, 때때로 보관 취소 될 수도 있습니다. 이상하게도 때로는 작동하고 때로는 그렇지 않습니다. NSMutableData
의 일부 콘텐츠가 보관 처리를 중단 할 것으로 판단됩니다.
나는 bools을 제외한 모든 개체에 대한 encodeObject를 사용하고 내가
더 명확하게하기 위해 올바른 대응 방법 (encodeBool:forKey:
및 encodeInt:forKey:
)를 사용하는 경우 int로는 : 코드는 정말 가끔 작업을 수행 그것을 다시 할 수 있습니다 오히려 완전한 개체 그래프 일뿐입니다.
내가 오류 메시지는 다음과 같습니다
initForReadingWithData incomprehensible archive 0x62, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x30, 0x30
추가 : 코드 실패하는, 그것에게 NSMutableData
- (void)encodeWithCoder:(NSCoder*)encoder {
[encoder encodeObject:self.encodedMessage forKey:@"EncodedMessage"]; //NSData
[encoder encodeObject:self.data forKey:@"Data"]; //NSMutableData (10+MB)
[encoder encodeObject:self.header forKey:@"Header"]; //NSString
[encoder encodeObject:self.fileName forKey:@"FileName"]; //NSString
[encoder encodeInt:self.dataStartIndex forKey:@"DataStartIndex"]; //int
[encoder encodeInt:self.dataEndIndex forKey:@"DataEndIndex"]; //int
}
- (id)initWithCoder:(NSCoder*)decoder {
if (self = [super init]) {
self.encodedMessage = [decoder decodeObjectForKey:@"EncodedMessage"]; //NSData
self.data = [decoder decodeObjectForKey:@"Data"]; //NSMutableData
self.header = [decoder decodeObjectForKey:@"Header"]; //NSString
self.fileName = [decoder decodeObjectForKey:@"FileName"]; //NSString
self.dataStartIndex = [decoder decodeIntForKey:@"DataStartIndex"]; //int
self.dataEndIndex = [decoder decodeIntForKey:@"DataEndIndex"]; //int
}
return self;
}
메가바이트 10 +의 것은 내가 self.data 인코딩을 제거하고 디코딩 할 때 항상 작동하는 것처럼 보입니다. 작은 크기의 self.data에서도 실패합니다. 크기가 문제가 아닌 콘텐츠 문제가 있습니까? 나는 그것에 nsmutabledata 쓰기했을 때
파일을 열 시도의 propertly 목록 편집기 오류를 표시합니다
"Conversion of string failed. The string is empty."
plutil는이 오류주는 다음 부울 들어
"$ plutil -lint nzbvortex.state nzbvortex.state: Conversion of string failed. The string is empty."
이 문제가 발생했습니다. 오류 메시지는 귀하의 것과 동일합니다. 다른 스레드에서 NSKeyedArchiver에 의해 아카이브 된 데이터를 unarchive하기 위해 NSFileCoordinator 읽기 블록에서 NSKeyedUnarchiver를 사용합니다. 충돌이 때때로 발생하고 디버깅 할 때 충돌을 재현 할 수 없습니다. 해결책있어? – liuyaodong