Object-C中使用NSKeyedArchiver歸檔(將各類類型的對象存儲到文件中)

Object-C中使用NSKeyedArchiver歸檔(將各類類型的對象存儲到文件中) 

yedArchiver歸檔(將各類類型的對象存儲到文件中) 


將各類類型的對象存儲到文件中,而不單單是字符串、數組和字典類型,有一種更靈活的方法。就是利用NSKeyedAarchiver類建立帶鍵(keyed)的檔案來完成。數組

Mac OS X從版本10.2開始支持帶鍵的檔案。在此以前,要使用NSArchiver類建立連續的(sequential)歸檔。連續的歸檔須要徹底按照寫入時的順序讀取歸檔中的數據。ide

在帶鍵的歸檔中,每一個歸檔字段都有一個名稱。歸檔某個對象時,會爲它提供一個名稱,即鍵。從歸檔中檢索該對象時,是根據這個鍵來檢索的。這樣能夠按照任意的順序將對象寫入歸檔並進行檢索。另外,若是向類添加了新的實例變量或刪除了實例變量,程序也能夠進行處理。spa

注意:iPhone SDK中沒有提供NSArchiver。若是想在iPhone上使用歸檔功能,則必須使用NSKeyedArchiver。.net

代碼示例以下:orm


#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        
        //---------------使用NSKeyedArchiver歸檔(存儲各類類型的對象數據)-------------
        //將字典數據寫到文件glossary.archive中
        NSDictionary *glossary = [NSDictionary dictionaryWithObjectsAndKeys:
                                  @"A class defined so other class can inherit from it.",@"abstract class",
                                  @"To implement all the methods defined in a protocol.",@"adopt",
                                  @"Storing an object for later use.",@"archiving",
                                  nil
                                  ];
        [NSKeyedArchiver archiveRootObject:glossary toFile:@"glossary.archive"];
        
        //將文件glossary.archive中的數據讀到字典對象並顯示出來
        NSDictionary *readglossary = [NSKeyedUnarchiver unarchiveObjectWithFile:@"glossary.archive"];
        
        for(NSString *key in readglossary)
            NSLog(@"%@: %@",key,[readglossary objectForKey:key]);
    }
    return 0;
}


其中,對象



[NSKeyedArchiver archiveRootObject:glossary toFile:@"glossary.archive"];

將字典glossary寫入到文件glossary.archive中。能夠爲該文件指定任何路徑名。在本例中,文件被寫入當前目錄下。blog


以後,又經過字符串


NSDictionary *readglossary = [NSKeyedUnarchiver unarchiveObjectWithFile:@"glossary.archive"];

方法將建立的歸檔文件讀入執行程序中。這個語句將指定的文件打開並讀取文件的內容,該文件必須是之前歸檔操做的結果。能夠爲文件指定完整路徑名或相對路徑名。get


在顯示結果以後,能夠簡單的經過枚舉其內容來驗證恢復是否成功。it

相關文章
相關標籤/搜索