개체의 NSDictionary를 장치에 저장하려면 아래 코드를 사용하고 있습니다. 이 아카이브를 열고, 포함 된 사전 항목을 드릴 다운하고, 이상적으로, 데이터를 편집 할 수있는 방법이 있습니까? 저의 추측은 아닙니다. 저장시 최적화가 이루어지면 압축 파일을 해석하기가 어려워집니다. 적어도 속성 목록 편집기과 같은 형식으로 열면 나타납니다. 예를 들어, 내 개체의 일부가 유사한 NSString을 공유하는 경우 NSString이 한 번만 아카이브되었다고 표시되는 것처럼 보입니다. NSDictionary의 구조를 예상했던 것에서 변경합니다.안정적으로 열고 NSKeyedArchiver의 아카이브를 편집 할 수 있습니까?
- (BOOL)writeDataToFile {
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:myDictionary forKey:kDataKey];
[archiver encodeInteger:kDataFileVersion forKey:kDataVersionKey];
[archiver finishEncoding];
BOOL success = [data writeToFile:[self dataFilePath] atomically:YES];
[archiver release];
[data release];
return success;
}
내가이 파일을 구문 분석 할 수있는 몇 가지 * 또는 일부 도구 *를 간과하고 있거나 알지 못했을 때 나는 단지 궁금했다. 왜? 대부분 애플리케이션이 아카이브의 여러 유형의 데이터에 어떻게 반응하는지 테스트합니다. CD 또는 SQLite와 관련된 것은 없습니다. – Meltemi
이것은 유효한 요청에 대한 다소 도움이되지 않는 대답입니다. 예를 들어, Xcode의 핵심 데이터 스키마 편집기로 만든 "레이아웃"과 "요소"파일 같은 두 가지 버전의 plist 파일을 비교해야합니다.이 경우 원시 plist 파일을 비교할 때 텍스트 plist로 바뀌어도 , 모델이 거의 변경되지 않은 경우에도 많은 ID가 변경 될 수 있으므로 잘 작동하지 않습니다. 실제로 변경된 사항을 알기 위해 이러한 보관 된 오브젝트의 오브젝트 레이아웃을 확인해야합니다. –
사실은 실제 내부 데이터로 유지됩니다. 이 파일들을 코딩하는 것은 하나의 OS 버전에서 다음 버전으로 바뀔 수있는 구현 세부 사항입니다. 그것은 가능하지는 않겠지 만, 수동으로 분석하고 그것을 바꿔서 다시 작성하려고 시도하는 것은 나쁜 생각입니다. 데이터 구조 및 키 이름을 미리 안전하게 보관할 기회가 있습니다. 그런데도 보관 취소 된 * 실제 * 클래스는 이전 버전의 클래스에 대해 작성된 아카이브에 내부적으로 수행 할 수 있습니다. ** 나쁜 생각.** –