NSKeyedArchiverクラス

2010. 10. 23
●概要

NSKeyedArchiverはNSCoderの具象サブクラスで、オブジェクト(とスカラー値)をアーキテクチャに依存しないフォーマットでエンコードし、ファイルに格納することができる方法を提供します。

オブジェクトの設定をアーカイブ化する場合、各オブジェクトのクラス情報とインスタンス変数をアーカイブに記述します。

NSKeyedArchiverと対になるクラスはNSKeyedUnarchiverで、アーカイブ内のデータをデコードし、元の設定と同じオブジェクトの設定を生成します。

キー付アーカイブはキー無アーカイブと異なり、全てのオブジェクトと値にはアーカイブをエンコードする時に名前またはキーが与えられます。

キー無アーカイブをデコードする時は、エンコードした時と同じ順序で値がデコードされます。

キー付アーカイブをデコードする時は、名前を要求して値を取得するので、全ての値は順序に関係無くデコードすることができます。

したがってキー付アーカイブは、より良い前方または後方互換性を持ったサポートを提供します。

エンコードする値に指定するキーは、現在エンコードするオブジェクトのスコープ内で唯一のものである必要があります。

キー付アーカイブは階層構造になっているので、たとえオブジェクトAとオブジェクトBが同じクラスのインスタンスであっても、インスタンス変数をエンコードする際に、オブジェクトAで使用されているキーとオブジェクトBで使用されているキーが競合してはいけません。

しかし単一オブジェクトの場合、スーパークラスで使用されているキーとサブクラスで使用されているキーが競合することはできます。

NSArchiverオブジェクトは、提供したファイルまたは可変データオブジェクト(NSMutableDataのインスタンス)にアーカイブデータを書き込むことができます。



●タスク

●NSKeyedArchiverオブジェクトの初期化

– initForWritingWithMutableData:

●データのアーカイブ

+ archivedDataWithRootObject:
+ archiveRootObject:toFile:
– finishEncoding
– outputFormat
– setOutputFormat:

●データとオブジェクトのエンコード

– encodeBool:forKey:
– encodeBytes:length:forKey:
– encodeConditionalObject:forKey:
– encodeDouble:forKey:
– encodeFloat:forKey:
– encodeInt:forKey:
– encodeInt32:forKey:
– encodeInt64:forKey:
– encodeObject:forKey:

●デリゲートの管理

– delegate
– setDelegate:

●クラスとクラス名の管理

+ setClassName:forClass:
+ classNameForClass:
– setClassName:forClass:
– classNameForClass:



●クラスメソッド

archivedDataWithRootObject:

+ (NSData *)archivedDataWithRootObject:(id)rootObject

指定したオブジェクトグラフのルートオブジェクトをエンコード(アーカイブ)し、NSDataオブジェクトにして返します。

アーカイブのフォーマットはNSPropertyListBinaryFormat_v1_0で定義されています。

rootObject:アーカイブするオブジェクトグラフのルートオブジェクトを指定します。



●インスタンスメソッド

encodeInt:forKey:

- (void)encodeInt:(int)intv forKey:(NSString *)key

指定したint値を関連付けするキーを指定してエンコードします。

intv:エンコードする値を指定します。

key:intvに関連付けするキーを指定します。
この値はnil以外にする必要があります。


encodeObject:forKey:

- (void)encodeObject:(id)objv forKey:(NSString *)key

指定したオブジェクトを関連付けするキーを指定してエンコードします。

objv:エンコードする値を指定します。
この値はnilになる場合があります。

key:objvに関連付けするキーを指定します。
この値はnil以外にする必要があります。


finishEncoding

- (void)finishEncoding

データストリームの最終的な構築をレシーバに指示します。

このメソッドを呼び出した後で、それ以上の値のエンコードを行うことはできません。

完了してからこのメソッドを呼び出す必要があります。


initForWritingWithMutableData:

- (id)initForWritingWithMutableData:(NSMutableData *)data

指定した可変データオブジェクトに、アーカイブをエンコードするための初期化をし、レシーバを返します。

戻り値はレシーバで、dataにアーカイブをエンコードするための初期化が行われています。

データのエンコードが終了した時、dataへの入力が完了した時点でfinishEncodingを呼び出す必要があります。

レシーバのフォーマットはNSPropertyListBinaryFormat_v1_0です。

data:アーカイブを書き込む可変データオブジェクトを指定します。



●定数

Keyed Archiving Exception Names

アーカイブの生成で問題が生じた場合に、NSKeyedArchiverによって発生した例外の名前です。

extern NSString *NSInvalidArchiveOperationException;

NSInvalidArchiveOperationException
アーカイブの生成で問題が生じた場合に、NSKeyedArchiverによって発生した例外の名前です。



参考文献

NSKeyedArchiver Class Reference






Bose QuietComfort 25
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
02 | 2017/03 | 03
Sun Mon Tue Wed Thu Fri Sat
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
Recent Articles
iTunes


Swift
Categories
Tips
WACOM


Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
BOSE

Bose QuietComfort 25
ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
SQLite
OpenGL ES
Amazon


Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Profile

Author:水月杏香
永遠の初心者プログラマ。

QR Code
QR
Visitors