歸檔(轉)

如果是自定義類型的歸檔和解檔,是按以下步驟實現
如果不是自定義類型,直接第四步就可以。

一、創建一個類User
二、在User.h中遵循NSCoding協議

#import?<Foundation/Foundation.h>

?

@interface?User :?NSObject<NSCoding>

{

? ??int?_userAge;//例子

? ??NSString?*_userName;//

}

@property(nonatomic,assign)int?userAge;

@property(nonatomic,copy)NSString?*userName;

@end

三、在User.m中實現協議中的歸檔,解檔方法

@implementation?User

@synthesize?userName =?_userName;

@synthesize?userAge =?_userAge;

?

//?實現歸檔操作

- (void)encodeWithCoder:(NSCoder?*)aCoder

{

? ? [aCoder?encodeObject:_userName?forKey:@"username"];

? ? [aCoder?encodeInt:_userAge?forKey:@"userage"];

}

?

//?實現解檔操作

- (id)initWithCoder:(NSCoder?*)aDecoder

{

? ??_userAge?= [aDecoder?decodeIntForKey:@"userage"];

? ??_userName?= [aDecoder?decodeObjectForKey:@"username"];

? ??return?self;

}

@end

四、在AppDelegate.m中包含user.h

?

#import?"AppDelegate.h"

#import?"User.h"

?

?

@implementation?AppDelegate

@synthesize?window=_window;

?

- (void)dealloc

{

? ? [_window?release];

? ? [super?dealloc];

}

?

- (BOOL)application:(UIApplication?*)application didFinishLaunchingWithOptions:(NSDictionary?*)launchOptions

{

? ??self.window?= [[[UIWindow?alloc]?initWithFrame:[[UIScreen?mainScreen]?bounds]]autorelease];

? ??// Override point for customization after application launch.

?? ?

?? ?

? ??//?歸檔(序列化和反序列化)?-?存儲自定義對象

?? ?

? ??User?*user = [[User?alloc]?init];

? ? user.userAge?= 30;

? ? user.userName?=?@"張三";

?? ?

? ??//?歸檔操作(將歸檔數據寫入NSMutableData中,然后將NSMutableData對象寫成文件)

? ??NSMutableData?*data = [[NSMutableData?alloc]?init];

? ??NSKeyedArchiver?*archiver = [[NSKeyedArchiver?alloc]initForWritingWithMutableData:data];

? ??//?寫入數據

? ? [archiver?encodeObject:@"test"?forKey:@"username"];

? ? [archiver?encodeObject:@"123456"?forKey:@"userpassword"];

? ? [archiver?encodeInt:111?forKey:@"number"];

? ? [archiver?encodeObject:user?forKey:@"user"];

? ??//?寫入完畢?

? ? [archiver?finishEncoding];

? ? [archiver?release];

? ??//?將data寫成文件

? ? [data?writeToFile:[NSStringstringWithFormat:@"%@/Library/Caches/user.archiver",NSHomeDirectory()]?atomically:NO];

? ? [data?release];

?? ?

?? ?

? ??//?解檔(先把文件讀取成NSMutableData然后從data中解出數據)

? ??NSMutableData?*contentData = [[NSMutableData?alloc]?initWithContentsOfFile:[NSStringstringWithFormat:@"%@/Library/Caches/user.archiver",NSHomeDirectory()]];

? ??NSKeyedUnarchiver?*unarchiver = [[NSKeyedUnarchiver?alloc]initForReadingWithData:contentData];

? ??int?number = [unarchiver?decodeIntForKey:@"number"];

? ??NSString?*username = [unarchiver?decodeObjectForKey:@"username"];

? ??NSString?*userpassword = [unarchiver?decodeObjectForKey:@"userpassword"];

? ??User?*contentUser = [unarchiver?decodeObjectForKey:@"user"];

?? ?

? ??NSLog(@"user.userAge = %d",contentUser.userAge);

? ??NSLog(@"user.userName = %@",contentUser.userName);

? ??NSLog(@"number = %d",number);

? ??NSLog(@"username = %@",username);

? ??NSLog(@"userpassword = %@",userpassword);

?? ?

?? ?

?? ?

? ??self.window.backgroundColor?= [UIColor?whiteColor];

? ? [self.window?makeKeyAndVisible];

? ??return?YES;

}

轉載于:https://www.cnblogs.com/zszszs5/p/4325513.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375260.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375260.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375260.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

相遇

CPU直接識別的唯一語言是機器語言,為了克服機器語言的缺點,便將機器指令用便于記憶、并能描述指令功能的符號來表示稱為指令助記符簡稱助記符 匯編語言由匯編指令,偽指令,和其它符號組成 匯編指令:機器碼的助記符,有對應的機器碼 偽指令:沒有對應的機器碼由編譯器執行 其它符號…

相識

編譯器&#xff1a;MASM 調試程序&#xff1a;DEBUG 編輯器&#xff1a;EditPlus

MySQL show命令的用法

show tables或show tables from database_name; // 顯示當前數據庫中所有表的名稱show databases; // 顯示mysql中所有數據庫的名稱show columns from table_name from database_name; 或show columns from database_name.table_name; // 顯示表中列名稱show grants for user_n…

怎么用代碼制作WordPress的歸檔頁面

先看看效果&#xff0c;這個是我網站的歸檔頁面&#xff1a;http://www.shenjieblog.com/archives 其實WordPress自帶了一個歸檔的功能&#xff0c;但是只能顯示在網頁中的某一個部分&#xff0c;但是我想單獨制作一個歸檔頁面&#xff0c;因為看見很多網站都有這個&#xff0c…

【web必知必會】—— 使用DOM完成屬性填充

本文介紹了使用DOM的簡單方法實現動態加載圖片的功能。 前文介紹了&#xff1a; 1 DOM四個常用的方法 首先看一下效果&#xff0c;初始時是一個相冊&#xff0c;可以點擊導航&#xff0c;切換圖片&#xff0c;并切換下方顯示內容&#xff1a; 點擊house&#xff0c;可以動態的切…

地址總線 數據總線

地址總線&#xff1a; CPU地址總線的寬度決定了它能尋址多少個內存單元地址,一個CPU有N根地址總線那么它的尋址能力為2^N次方。8086CPU地址總線寬度為20可尋址2^20次方個內存單元地址大小為1M。80386地址總線寬度為32可尋址內存為4GB 數據總線&#xff1a; CPU與存儲器之間的數…

Spring事務配置方式(一) 攔截器方式配置

一、使用<tx:advice>和<aop:config>配置事務 <!-- 配置事務管理器 --><bean id"transactionManager" class"org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name"dataSource" ref&qu…

8086寄存器組

寄存器(14個)|AX,BX,CX,DX,SP,BP,SI,DI,IP,FLAG,CS,DS,SS,ES| >通用寄存器 數據寄存器(存放一般數據)AX (AH,AL) | BX (BH,BL) | CX (CH,CL) | DX (DH,DL) 指針寄存器 堆棧指針 基址指針SP BP (SS:SP) 變址寄存器 源地址 目的地址SI …

學習動態性能表(10)--v$session_longops

學習動態性能表 第十篇--V$SESSION_LONGOPS 2007.6.7 本視圖顯示運行超過6秒的操作的狀態。包括備份&#xff0c;恢復&#xff0c;統計信息收集&#xff0c;查詢等等。 要監控查詢執行進展狀況&#xff0c;你必須使用cost-based優化方式&#xff0c;并且&#xff1a; 設置TIME…

存儲器

存儲器以字節為單位存儲信息,一個存儲單元存儲一個字節。一個字需要用兩個連續的存儲單元。 每一個存儲單元有唯一的地址&#xff0c;稱為存儲單元地址。

JDBC常用API小結

建立數據庫鏈接的三種方式&#xff1a; package com.victor_01;import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties;import org.junit.Test;public class Test1 {private String…

學習動態性能表(12)--v$db_object_cache

學習動態性能表 第12篇--V$DB_OBJECT_CACHE 2007.6.4 本視圖提供對象在library cache(shared pool)中對象統計&#xff0c;提供比v$librarycache更多的細節&#xff0c;并且常用于找出shared pool中的活動對象。 v$db_object_cache中的常用列&#xff1a; OWNER&#xff1a;對…

Java Platform Standard Edition 8 Documentation

下面這個圖挺有用的&#xff0c;收藏一下。Oracle has two products that implement Java Platform Standard Edition (Java SE) 8: Java SE Development Kit (JDK) 8 and Java SE Runtime Environment (JRE) 8.JDK 8 is a superset of JRE 8, and contains everything that is…

清除端口占用的程序

程序啟動的過程中&#xff0c;有時候會提示“端口被占用”。如何快速的找到占用該端口的進程&#xff1f;網上有很多種方法&#xff0c;這里自己整理了下&#xff0c;使用DOS命令查詢端口并清除端口占用的程序&#xff0c;做個筆記。 windows系統下DOS命令&#xff1a; 1.查看端…

Python進階06 循環對象

Python進階06 循環對象 作者&#xff1a;Vamei 出處&#xff1a;http://www.cnblogs.com/vamei 歡迎轉載&#xff0c;也請保留這段聲明。謝謝&#xff01; 這一講的主要目的是為了大家在讀Python程序的時候對循環對象有一個基本概念。 循環對象的并不是隨著Python的誕生就存在的…

使用 WordPress 主題制作的20個精美網頁

WordPress 是一款個人博客系統&#xff0c;并逐步演化成一款內容管理系統軟件&#xff0c;它是使用 PHP 語言和 MySQL 數據庫開發的。用戶可以在支持 PHP 和 MySQL 數據庫的服務器上使用自己的博客。這里給大家分享使用 WordPress 主題制作的20個精美網頁。 您可能感興趣的相關…

內存地址空間

一個存儲器(內存)被劃分為若干個存儲單元,一個存儲單元可存儲一個字節(Byte) CPU可尋址到多少個存儲單元即這些存儲單元就是CPU的內存地址空間 如8086CPU有20根地址線可尋址1M的存儲單元,那么這個1M個可尋址到的存儲單元就構成這個CPU的內存地址空間 而實際的存儲器可以是RA…

關于監聽與控制設備旋轉全解析(UIDeviceOrientationDidChangeNotification)

一類情況&#xff1a; 初始化app的方向&#xff0c;比如只支持橫屏或者豎屏。下面舉例只支持豎屏的案例 在app的屬性里面手動設置 上面標注了該app支持的方向種類&#xff0c;要是在app里支持Portrait方向&#xff0c;還需要添加以下代碼 二類情況&#xff1a; 上面的代碼表明a…

標志寄存器FLAG

FLAG標志寄存器按位操作&#xff0c;FLAG是16位寄存器&#xff0c;第0位為CF標志第2位為PF標志... 如圖(FLAG各標志位以及在DEBUG中對應的顯示)&#xff1a;