標籤:ios objective-c 資料存放區 儲存
1、NSData
1.介紹
使用archiveRootObject:toFile:方法可以將一個對象直接寫入到一個檔案中,但有時候可能想將多個對象寫入到同一個檔案中,那麼就要使用NSData來進行歸檔對象
NSData可以為一些資料提供臨時儲存空間,以便隨後寫入檔案,或者存放從磁碟讀取的檔案內容。可以使用
[NSMutableDatadata]建立可變資料空間
2.範例
1. 歸檔(編碼)
// 建立一塊可變資料區NSMutableData *data = [NSMutableData data];// 將資料區串連到一個NSKeyedArchiver對象NSKeyedArchiver *archiver = [[[NSKeyedArchiver alloc] initForWritingWithMutableData:data] autorelease];// 開始存檔對象,存檔的資料都會儲存到NSMutableData中[archiver encodeObject:person1 forKey:@"person1"];[archiver encodeObject:person2 forKey:@"person2"];// 存檔完畢(一定要調用這個方法)[archiver finishEncoding];// 將存檔的資料寫入檔案[data writeToFile:path atomically:YES];
2. 恢複(解碼)
// 從檔案中讀取資料NSData *data = [NSData dataWithContentsOfFile:path];// 根據資料,解析成一個NSKeyedUnarchiver對象NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];Person *person1 = [unarchiver decodeObjectForKey:@"person1"];Person *person2 = [unarchiver decodeObjectForKey:@"person2"];// 恢複完畢[unarchiver finishDecoding];
3.深賦值
// 臨時儲存person1的資料NSData *data = [NSKeyedArchiver archivedDataWithRootObject:person1];// 解析data,產生一個新的Person對象Student *person2 = [NSKeyedUnarchiver unarchiveObjectWithData:data];// 分別列印記憶體位址NSLog(@"person1:0x%x", person1); // person1:0x7177a60NSLog(@"person2:0x%x", person2); // person2:0x7177cf0
iOS 資料存放區 - 02歸檔多個對象