程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> OC中保存自定義類型對象的持久化方法

OC中保存自定義類型對象的持久化方法

編輯:關於C語言

OC中保存自定義類型對象的持久化方法


OC中如果要將自定義類型的對象保存到文件中,必須進行以下三個條件:   想要把存放自定義類型的數組進行 持久化(就是將內存中的臨時數據以文件<數據庫等>的形式寫到磁盤上)必須滿足:    1. 自定義對象必須要序列化(將數據有序的存放)    2. 需要使用歸檔來進行持久化    3. 如果要加載持久化文件需要進行反序列化(就是將有序存放的數據讀取並變成自定義對象)   第一要將自定義類型序列化以及第三步並將文件反序列化必須實現OC中的  <NSCoding>協議。   以Student類為例  
@interface Student : NSObject<NSCoding>
@property(nonatomic,copy)NSString * name;
@property(nonatomic,copy)NSString * pwd;
@end

 

進行序列化的方法為  
-(void)encodeWithCoder:(NSCoder *)aCoder
{
    [aCoder encodeObject:self.name forKey:@"name"];
    [aCoder encodeObject:self.pwd forKey:@"pwd"];
}

 

進行反序列化的方法為:    
-(id)initWithCoder:(NSCoder *)aDecoder
{
    self= [super init];
    if(self)
    {
        self.name=[aDecoder decodeObjectForKey:@"name"];
        self.pwd=[aDecoder decodeObjectForKey:@"pwd"];     
    }
    return self;
}

 

    需要注意的是,我們在類的聲明文件中並不需要聲明這兩個文件,因為我們只在本類中使用這兩個方法,所以我們只需要在實現文件中實現這兩個方法就可以了。   值得注意的是歸檔操作在外面實現這個協議的兩個方法時就已經由系統實現,因此我們並不需要實現歸檔操作。我們需要的僅僅是將文件寫入到指定的文件中,以及將該文件讀取出來。我們可以理解為,我們在實現讀取和寫入的方法的過程中,實現了序列化和反序列化操作。進而實現了歸檔操作。寫入文件和讀取文件的代碼如下:  
        [NSKeyedArchiver archiveRootObject:stuArr toFile:@"/Users/Administrator/Desktop/4.plist"];
        [NSKeyedUnarchiver unarchiveObjectWithFile:@"/Users/Administrator/Desktop/4.plist"];

 

遍歷該文件所包含的對象即可得到文件中所包含的對象的所有屬性  
        for(Student * s in stuArr)
        {
            NSLog(@"%@,%@",s.name,s.pwd);
        }

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved