NSDataクラス

2010. 10. 23
●概要

NSDataとその可変サブクラスNSMutableDataはデータオブジェクトを提供し、バイトバッファのためのオブジェクト指向のラッパーです。

データオブジェクトは、単純に割り当てられたバッファ(ポインタが埋め込まれていないデータ)を取り出し、Foundationオブジェクトとして動作します。

NSDataは静的なデータオブジェクトを生成し、NSMutableDataは動的なデータオブジェクトを生成します。

NSDataとNSMutableDataは、通常データストレージ用に使用されており、また分散オブジェクトアプリケーションでも有用で、データオブジェクト内に含まれるデータをアプリケーション間でコピーや移動をすることができます。

32bitのCocoaではデータのサイズが理論上2GBに制限されており(実際には他のオブジェクトにもメモリが使用されるため、これより小さくなります)、64bitのCocoaではデータのサイズが理論上約8EBに制限されています(実際には制限が要因ではありません)。

NSDataは『toll-free bridged』の対象としてCore FoundationのCFDataがあります。

これはFoudationオブジェクトを橋渡ししてCore Foundationの型に変換し、関数やメソッドで呼び出せることを意味します。

したがってNSData *パラメータを参照する際、CFDataRefに渡し、CFDataRefパラメータとして参照でき、(コンパイラの警告を抑えるために型変換をして)NSDataインスタンスに渡すこともできます。

この橋渡しは、NSDataの実際のサブクラスに適用されます。

データ型の相互変換についての詳細はtoll-free bridgingを参照してください。



●タスク

●データオブジェクトの生成

+ data
+ dataWithBytes:length:
+ dataWithBytesNoCopy:length:
+ dataWithBytesNoCopy:length:freeWhenDone:
+ dataWithContentsOfFile:
+ dataWithContentsOfFile:options:error:
+ dataWithContentsOfMappedFile:
+ dataWithContentsOfURL:
+ dataWithContentsOfURL:options:error:
+ dataWithData:
– initWithBytes:length:
– initWithBytesNoCopy:length:
– initWithBytesNoCopy:length:freeWhenDone:
– initWithContentsOfFile:
– initWithContentsOfFile:options:error:
– initWithContentsOfMappedFile:
– initWithContentsOfURL:
– initWithContentsOfURL:options:error:
– initWithData:

●データへのアクセス

– bytes
– description
– getBytes:length:
– getBytes:range:
– subdataWithRange:
– rangeOfData:options:range:
– getBytes:

●データのテスト

– isEqualToData:
– length

●データの格納

– writeToFile:atomically:
– writeToFile:options:error:
– writeToURL:atomically:
– writeToURL:options:error:



●クラスメソッド

dataWithBytes:length:

+ (id)dataWithBytes:(const void *)bytes length:(NSUInteger)length

指定した長さのバイト数をバッファからコピーして、それを格納したデータオブジェクトを作成して返します。

データオブジェクトが作成できなかった場合はnilを返します。

bytes:コピーするデータの入ったバッファを指定します。

length:バッファからコピーするバイト数を指定します。
バッファのサイズを超える長さを指定してはいけません。



●インスタンスメソッド

initWithContentsOfFile:

- (id)initWithContentsOfFile:(NSString *)path

指定したパスにあるファイルからデータを読み込み、初期化したデータオブジェクトを返します。

戻り値は、pathで指定されたファイルから読み込んだデータで初期化したデータオブジェクトです。

返すオブジェクトは、元のレシーバとは異なる場合があります。

このメソッドはinitWithContentsOfFile:options:error:のオプションが無いものと同じです。

path:データを読み込むファイルの絶対パスを指定します。


initWithContentsOfFile:options:error:

- (id)initWithContentsOfFile:(NSString *)path options:(NSDataReadingOptions)mask error:(NSError **)errorPtr

指定したパスにあるファイルからデータを読み込み、初期化したデータオブジェクトを返します。

戻り値は、pathで指定されたファイルから読み込んだデータで初期化したデータオブジェクトです。

返すオブジェクトは、元のレシーバとは異なる場合があります。

path:データを読み込むファイルの絶対パスを指定します。

mask:データを読み込むためのオプションとしてマスクを指定します。
定数の構成は『NSDataReadingOptions』に記述されています。

errorPtr:エラーが発生した場合、問題の記述を含むNSErrorオブジェクトを返します。


writeToFile:atomically:

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag

レシーバのバイト列を、指定したパスのファイルに書き込みます。

成功した場合はYESを、失敗した場合はNOを返します。

path:レシーバのバイト列を書き込むファイルパスを指定します。
ファイルパスにチルダ『~』が含まれる場合は、stringByExpandingTildeInPathメソッドで変換してください。

atomically:YESの場合、一度予備ファイルに書き出してから、本来指定したパスのファイルに書き換えます。
そのため、書き出し途中にクラッシュしても元のパスのファイル内容は保証されます。
NOの場合、直接指定したパスのファイルに書き出します。



●定数

NSDataReadingOptions

NSDataオブジェクトの読み込みに使用するメソッドのオプションです。

enum {
    NSDataReadingMapped = 1UL << 0,
    NSDataReadingUncached = 1UL << 1
    NSMappedRead = NSDataReadingMapped,
    NSUncachedRead = NSDataReadingUncached
};
typedef NSUInteger NSDataReadingOptions;

NSDataReadingMapped
もし可能であれば、仮想メモリにファイルをマッピングするように指示します。

NSDataReadingUncached
ファイルシステムのキャッシュにファイルを格納しないように指示します。
データは一度読み込んだら破棄することで、パフォーマンスを向上させます。

NSMappedRead
この名称は非推奨です。
代わりにNSDataReadingMappedを使用してください。

NSUncachedRead
この名称は非推奨です。
代わりにNSDataReadingUncachedを使用してください。



参考文献

NSData Class Reference






QuietControl 30 wireless headphones
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
04 | 2017/05 | 06
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
Profile

水月杏香

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

Wish List
WACOM


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

QuietControl 30 wireless headphones
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