사용자 정의 대상 및 사용자 정의 대상 저장 그룹의 지속화

2039 단어
사용자 정의 객체
  • 먼저 Person 클래스를 만들고 NSObject 클래스를 계승합니다. 프로토콜 @interface Person : NSObject 성명 하나name 속성 @property(nonatomic,strong)NSString *name;
  • 2가지 에이전트 구현
  • //            ,        
     -(void)encodeWithCoder:(NSCoder *)aCoder{
        [aCoder encodeObject:self.name forKey:@"name"];
    }```
    

    //대상이 압축 파일을 되돌릴 때 호출하기 - (instancetype) initWithCoder: (NSCoder*) aDecoder {`if(self = [super init]) {self.name = [aDecoder decode ObjectForKey: @ "name"];return self; }```
  • 뷰 컨트롤러에서 아카이빙 및 역아카이빙(데이터 저장 및 체크 아웃)
  • 아카이브
  • //    Person  
    Person *person = [[Person alloc] init];
        person.name = @"  ";
    //  
    NSString *documentPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
        NSString *path = [documentPath stringByAppendingPathComponent:@"person.plist"];
    //       
    [NSKeyedArchiver archiveRootObject:person toFile:path];
    
  • 역아카이브
  • //   Person            
    Person *per = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
    

    사용자 정의 객체를 저장하는 배열
    수조 내에 저장된 대상도 협의를 준수하여 두 가지 대리 방법을 실현해야 한다. 구체적으로는 다음과 같다.
  • 뷰 컨트롤러 내부
  • //    person  
        Person *person1 = [[Person alloc] init];
        person1.name = @"huahua";
        Person *person2 = [[Person alloc] init];
        person2.name = @"peipei";
        //   person      
        NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:person1,person2, nil];
        //    
        NSString *documentPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
        NSString *path = [documentPath stringByAppendingPathComponent:@"array.plist"];
    //              
        [NSKeyedArchiver archiveRootObject:array toFile:path];
    //             
        NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
    

    좋은 웹페이지 즐겨찾기