NSKeyedUnarchiverクラス

2010. 10. 23
●概要

NSKeyedUnarchiverはNSCoderの具象サブクラスで、キー付アーカイブから指定されたオブジェクト(とスカラー値)の設定をデコードするメソッドを定義します。

このようなアーカイブは、NSKeyedArchiverクラスのインスタンスによって生成されます。

キー付アーカイブは、オブジェクトの階層としてエンコードされます。

階層内の各オブジェクトは他のオブジェクトがエンコードされている名前空間として利用できます。

デコード化できるオブジェクトは、特定オブジェクトの直接スコープ内でエンコードされたものに制限されています。

オブジェクトが階層内の別の場所でエンコードされていた場合、この特定オブジェクトより高かったり、低かったり並列の場合はアクセスできません。

この場合、インスタンス変数をエンコードするための特定オブジェクトで使用されるキーは、そのオブジェクトのスコープ内で唯一である必要があります。

アーカイブ内に存在しないキーを使用してこのクラスのdecode~メソッドの一つを呼び出すと、不正な値が返されます。

この値はデコードの型によって異なります。

例えばアーカイブ内に存在しないキーで呼び出すと、decodeBoolForKey:ではNOを、decodeIntForKey:では0を、decodeObjectForKey:ではnilを返します。

NSKeyedUnarchiverがサポートする型は限定されています。

値をエンコードする場合の整数の型は、標準intか明示的に32bitまたは64bit整数かどうかを、どの整数デコードメソッドを使ってデコードするかで決めることができます。

同様に、floatまたはdoubleの値のエンコードも、floatまたはdouble値のどちらかとしてデコードすることができます。

エンコードした値が大きくて強制型に収まらない場合、デコード化メソッドはNSRangeExceptionを発生させます。

さらに、互換性の無い型に値を強制した場合、例えばfloat値としてint値をデコードしようとすると、デコード化メソッドはNSInvalidUnarchiveOperationExceptionを発生させます。



●タスク

●キーによるアンアーカイバの初期化

– initForReadingWithData:

●データのアンアーカイブ

+ unarchiveObjectWithData:
+ unarchiveObjectWithFile:

●データのデコード

– containsValueForKey:
– decodeBoolForKey:
– decodeBytesForKey:returnedLength:
– decodeDoubleForKey:
– decodeFloatForKey:
– decodeIntForKey:
– decodeInt32ForKey:
– decodeInt64ForKey:
– decodeObjectForKey:
– finishDecoding

●デリゲートの管理

– delegate
– setDelegate:

●クラス名の管理

+ setClass:forClassName:
+ classForClassName:
– setClass:forClassName:
– classForClassName:



●クラスメソッド

unarchiveObjectWithData:

+ (id)unarchiveObjectWithData:(NSData *)data

NSKeyedArchiverで格納された、エンコードされているオブジェクトグラフをデコードして返します。

デコードできなかった場合はNSInvalidArchiveOperationExceptionを発生させます。

data:NSKeyedArchiverでエンコードされたオブジェクトグラフを指定します



●インスタンスメソッド

decodeIntForKey:

- (int)decodeIntForKey:(NSString *)key

指定したキーに関連付けされた整数値をデコードします。

戻り値はkeyに関連付けされた整数値です。

keyが存在しなかった場合は0を返します。

アーカイブされていた値が整数でも異なるサイズでエンコードされていた場合、型は変換されます。

アーカイブされていた値がデフォルトの整数のサイズよりも大きくて収まらない場合、メソッドはNSRangeExceptionを発生させます。

key:現在デコードするスコープ内にアーカイブされているキーを指定します。
keyはnil以外である必要があります。


decodeObjectForKey:

- (id)decodeObjectForKey:(NSString *)key

指定したキーに関連付けされたオブジェクトをデコードして返します。

戻り値はkeyに関連付けされたオブジェクトです。

keyが存在しなかった場合、またはkeyがnilの場合はnilを返します。

key:現在デコードするスコープ内にアーカイブされているキーを指定します。
keyはnil以外である必要があります。


finishDecoding

- (void)finishDecoding

オブジェクトのデコード化が完了したことをレシーバに伝えます。

このメソッドを呼び出すと、レシーバはデリゲートに通知し、アーカイブの最終的な操作を実行します。

このメソッドを一度呼び出すと、レシーバはそれ以降値のデコードをすることができません。


initForReadingWithData:

- (id)initForReadingWithData:(NSData *)data

事前にNSKeyedArchiverによってエンコードされたアーカイブをデコードしレシーバを初期化します。

戻り値は、dataをデコード化して初期化したNSKeyedUnarchiverオブジェクトです。

データのデコード化が完了したら、finishDecodingを呼び出す必要があります。

dataが有効なアーカイブでない場合、このメソッドはNSInvalidArchiveOperationExceptionを発生させます。

dataNSKeyedArchiverによって事前にエンコードされたアーカイブを指定します。



●定数

Keyed Unarchiving Exception Names

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

NSString *NSInvalidUnarchiveOperationException;

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



参考文献

NSKeyedUnarchiver Class Reference

Wikipedia/名前空間






Bose QuietComfort 20
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
08 | 2017/09 | 10
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
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

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

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

Bose QuietComfort 20
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
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR