NSData
NSDataはバイト列のデータ(バイナリデータ)を扱うときに使用します。
NSDataのクラス階層
NSObject
↑
NSData
NSData生成
// NSDictionaryからNSDataを生成する例
NSDictionary *dic =[NSDictionary dictionaryWithObject:@"hoge" forKey:@"KEY"];
NSData *d = [NSKeyedArchiver archivedDataWithRootObject:dic];
//ファイル(hoge.png)からNSDataを生成する例
NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle pathForResource:@"hoge" ofType:@"png"];
NSData *d = [[NSData alloc] initWithContentsOfFile:path];
NSData型に変換するには、上記例のようにNSKeyedArchiverクラスを使用します。
また、独自クラスなどをNSData型に変換するには、NSCodingプロトコルを実装している必要があります。
(NSDictionaryクラスや NSArrayクラスなどのクラスは既にNSCodingプロトコルを実装しているためNSData型に変換ができるのです。)
NSDataのメソッド
メソッド名 | 説明 |
---|---|
- (NSUInteger)length | サイズを取得する (例)int i = [d length]; |
主要なメソッドのみ掲載しています。
上記「NSDataのクラス階層」にあるクラスのメソッドも使用できます。
NSData例文
// NSDictionary型→NSData型→NSDictionary型
// NSDictionaryオブジェクトを生成
NSDictionary *dic =[NSDictionary dictionaryWithObject:@"hoge" forKey:@"KEY"];
// 生成したオブジェクトをNSData型に変換
NSData *d = [NSKeyedArchiver archivedDataWithRootObject:dic];
// NSData型オブジェクトをNSDictionary型に変換
NSDictionary *reverse = [NSKeyedUnarchiver unarchiveObjectWithData:d];