iOS 문서 서열화(객체 아카이브)

3187 단어
객체 아카이브:
개념:
객체 아카이브란 객체를 하드 드라이브에 기록하여 프로그램을 다시 열 때 복원할 수 있는 것입니다.대상의 서열화, 대상의 지속화라고도 부른다.
데이터의 지속성 방식(사실은 3가지)
1, NSKeyedArchiver – 객체 아카이빙
2, NSUserDefaults 3, 속성 목록
4, SQLite 데이터베이스 5, Core Data 데이터베이스
아카이빙 방법:
Foundation 라이브러리의 객체 아카이빙
아카이빙을 위한 객체 사용자 정의(아카이빙 프로토콜 필요, NSCoding)
아카이브와 속성 목록의 차이점:
1. 압축된 파일은 암호화되고 속성 목록은 명문이다.
2, 속성 목록은 사용자 정의 대상 유형을 저장할 수 없고 압축파일은 가능합니다.
코드 구현:
//    ,     
int main(int argc, char * argv[])
{
    @autoreleasepool {
//        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        //  (   )
        NSArray *array = @[@"abc",@"123",@1234];
        
        NSString *homePath = NSHomeDirectory();
        NSLog(@"homePath :%@",homePath);
        NSString *path = [homePath stringByAppendingPathComponent:@"test.archive"];  //         
        
        BOOL success = [NSKeyedArchiver archiveRootObject:array toFile:path];
        if (success) {
            NSLog(@"archive success");
        }
    }
    return 0;
}

이것은 암호화된 파일을 생성한 것이다.
열다
6270 6c69 7374 3030 d401 0203 0405 081c
1d54 2474 6f70 5824 6f62 6a65 6374 7358
2476 6572 7369 6f6e 5924 6172 6368 6976
6572 d106 0754 726f 6f74 8001 a609 0a12
1314 1555 246e 756c 6cd2 0b0c 0d0e 5624
636c 6173 735a 4e53 2e6f 626a 6563 7473
8005 a30f 1011 8002 8003 8004 5361 6263
5331 3233 1104 d2d2 1617 181b 5824 636c
6173 7365 735a 2463 6c61 7373 6e61 6d65
a219 1a57 4e53 4172 7261 7958 4e53 4f62
6a65 6374 574e 5341 7272 6179 1200 0186
a05f 100f 4e53 4b65 7965 6441 7263 6869
7665 7208 1116 1f28 3235 3a3c 4349 4e55
6062 6668 6a6c 7074 777c 8590 939b a4ac
b100 0000 0000 0001 0100 0000 0000 0000
1e00 0000 0000 0000 0000 0000 0000 0000

 
int main(int argc, char * argv[])
{
    @autoreleasepool {
//        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        //  (   )
//        NSArray *array = @[@"abc",@"123",@1234];
//        
//        NSString *homePath = NSHomeDirectory();
//        NSLog(@"homePath :%@",homePath);
//        NSString *path = [homePath stringByAppendingPathComponent:@"test.archive"];  //         
//        
//        BOOL success = [NSKeyedArchiver archiveRootObject:array toFile:path];
//        if (success) {
//            NSLog(@"archive success");
//        }
        
        //   (    )
        NSString *homePath = NSHomeDirectory();
        NSString *path = [homePath stringByAppendingPathComponent:@"test.archive"];
        NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
        NSLog(@"NSKeyedUnarchiver:%@",array);
    }
    return 0;
}

이 방법의 결함:
하나의 대상이 하나의 파일로 압축되어 있어서, 대상이 매우 많을 때 매우 번거롭다.
다음 방법으로 이 문제를 해결할 수 있다.
아카이빙:
1, NSData 인스턴스를 아카이빙된 스토리지 데이터로 사용
2, 압축 파일 내용 추가 (키와value 설정)
3, 아카이빙 완료
4, 디스크에 아카이브 데이터 저장
압축 파일을 풀려면 다음과 같이 하십시오.
1, 디스크에서 파일을 읽고 NSData 인스턴스 생성
2, Data 인스턴스를 기반으로 아카이브 인스턴스 생성 및 초기화
3, 압축 파일을 풀고 키에 따라value에 접근하는 값입니다.

좋은 웹페이지 즐겨찾기