歸檔是指用某種格式來保存一個或者多個對象,以便以後還原這些對象的過程。
使用xml屬性列表進行歸檔
如果你是對NSString,NSDictionary,NSArray,NSData,NSNumber對象進行歸檔,可以使用類中實現的writeToFile:atomically:方法將數據寫到文件中。
使用dictionaryWithContentsOfFile 或者arrayWithContentsOfFile,dataWithContentsOfFile,stringWithContentsOfFile方法讀回數據。
使用NSKeyedArchiver歸檔
將各種類型的對象存儲到文件中,不僅僅是字符串、數組和字典,有一種更靈活的方法,就是NSKeyedArchiver類創建帶鍵的檔案來完成。
帶鍵的檔案中,每個歸檔的字段都有一個名稱。歸檔某個對象時,為它提供一個名稱,即鍵。從歸檔中檢索對象時,是根據這個鍵來檢索的。
編碼方法和解碼方法
自定義的類對象不能直接歸檔。因為系統不知道如何進行歸檔。
按照
encodeWithCoder方法告知歸檔程序如何進行歸檔。initWithCoder方法告知如何解編碼。
前面描述的基本oc類,可以使用encodeObject:forKey進行編碼,decodeObject:forKey來解碼,對於基本的C類型使用如下方法
編碼方法
解碼方法
encodeBool:forKey:
decodeBool:forKey:
encodeInt:forKey:
decodeInt:forKey:
encodeInt32:forKey:
decodeInt32:forKey:
encodeInt64:forKey:
decodeInt64:forKey:
encodeFloat:forKey:
decodeFloat:forKey:
encodeDouble:forKey:
decodeDouble:forKey:
來個例子:
- (void)encodeWithCoder:(NSCoder *)coder { [coder encodeObject:@"tongxue" forKey:@"name"]; [coder encodeInt:13 forKey:@"age"]; } - (id)initWithCoder:(NSCoder *)aDecoder { NSString * name = [aDecoder decodeObjectForKey:@"name"]; int age = [aDecoder decodeIntForKey:@"age"]; return self; }