fc2ブログ

NSString(2)

2010. 03. 26
引き続きNSStringクラスの説明です。

●ファイルからの文字列の生成と初期化(Creating and Initializing a String from a File)

・+ stringWithContentsOfFile:encoding:error:

+ (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error

指定したパスにあるファイルを読み込み、エンコードして文字列を作って返します
(ファイルが開けなかったりエンコーディングでエラーになった場合はnilを返します)

path:ファイルの場所を示すパス
enc:パスの示しているファイルのエンコーディング
error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します
(エラー内容が不要な場合はNULLを指定します)

NSError *error;
NSString *オブジェクト = [NSString stringWithContentsOfFile:@"パス" encoding:NSJapaneseEUCStringEncoding error:&error];


・– initWithContentsOfFile:encoding:error:

– (id)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error

指定したパスのファイルを読み込み、エンコードして初期化したNSStringオブジェクトを返します
(ファイルが開けなかったりエンコーディングでエラーになった場合はnilを返します)

path:ファイルの場所を示すパス
enc:パスの示しているファイルのエンコーディング
error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します
(エラー内容が不要な場合はNULLを指定します)

NSError *error;
NSString *オブジェクト = [[NSString alloc] initWithContentsOfFile:@"パス" encoding:NSShiftJISStringEncoding error:&error];


・+ stringWithContentsOfFile:usedEncoding:error:

+ (id)stringWithContentsOfFile:(NSString *)path usedEncoding:(NSStringEncoding *)enc error:(NSError **)error

指定したパスにあるファイルを読み込み、エンコードを自動判別して作った文字列を返します
このメソッドはファイルからエンコーディングを決定しようとします
(ファイルが開けなかったりエンコーディングでエラーになった場合はnilを返します)

path:ファイルの場所を示すパス
enc:ファイルが正常に読み込まれた場合、エンコーディングを設定します
error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します
(エラー内容が不要な場合はNULLを指定します)

NSStringEncoding enc;
NSError *error;
NSString *オブジェクト = [NSString stringWithContentsOfFile:@"パス" usedEncoding:&enc error:&error];


・– initWithContentsOfFile:usedEncoding:error:

– (id)initWithContentsOfFile:(NSString *)path usedEncoding:(NSStringEncoding *)enc error:(NSError **)error

指定したパスにあるファイルを読み込み、エンコードを自動判別して初期化したNSStringオブジェクトを返します
(ファイルが開けなかったりエンコーディングでエラーになった場合はnilを返します)

path:ファイルの場所を示すパス
enc:ファイルが正常に読み込まれた場合、エンコーディングを設定します
error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します
(エラー内容が不要な場合はNULLを指定します)

NSStringEncoding enc;
NSError *error;
NSString *オブジェクト = [[NSString alloc] initWithContentsOfFile:@"パス" usedEncoding:&enc error:&error];

※ usedEncoding:はファイルから自動判別したエンコードの結果を入れておくのですが、『藤棚工房別棟 ー徒然ー/Cocoaの文字コード自動判別,まだ試しに作ってみただけでちゃんと実装してないなら,そう書いてください!』によると、その判別はかなり怪しいものらしいです。

また、『Cocoa APIとか(iPhoneとか)/stringWithContentsOfFile:』では『Unicode以外はC文字列と判別』と書かれていますが、自分で試してないのでよく分かりません。


●URLからの文字列の生成と初期化(Creating and Initializing a String from an URL)

・+ stringWithContentsOfURL:encoding:error:

+ (id)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error

指定したURLをエンコードして作った文字列を返します
(URLが開けなかったりエンコーディングでエラーになった場合はnilを返します)

url:URLを読み込みます
enc:パスの示しているURLのエンコーディング
error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します
(エラー内容が不要な場合はNULLを指定します)

NSError *error;
NSString *オブジェクト = [NSString stringWithContentsOfURL:@"パス" encoding:NSJapaneseEUCStringEncoding error:&error];


・– initWithContentsOfURL:encoding:error:

– (id)initWithContentsOfURL:(NSURL *)url encoding:(MSStringEncoding)enc error:(NSError **)error

指定したURLをエンコードして初期化したNSStringオブジェクトを返します
(URLが開けなかったりエンコーディングでエラーになった場合はnilを返します)

url:URLを読み込みます
enc:パスの示しているURLのエンコーディング
error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します
(エラー内容が不要な場合はNULLを指定します)

NSError *error;
NSString *オブジェクト = [[NSString alloc] initWithContentsOfURL:@"パス" encoding:NSShiftJISStringEncoding error:&error];


・+ stringWithContentsOfURL:usedEncoding:error:

+ (id)stringWithContentsOfURL:(NSURL *)url usedEncoding:(NSStringEncoding *)enc error:(NSError **)error

指定したURLを自動判別して作った文字列を返します
このメソッドはURLからエンコーディングを決定しようとします
(URLが開けなかったりエンコーディングでエラーになった場合はnilを返します)

url:URLを読み込みます
enc:URLが正常に読み込まれた場合、エンコーディングを設定します
error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します
(エラー内容が不要な場合はNULLを指定します)

NSStringEncoding enc;
NSError *error;
NSString *オブジェクト = [NSString stringWithContentsOfURL:@"パス" usedEncoding:&enc error:&error];


・– initWithContentsOfURL:usedEncoding:error:

– (id)initWithContentsOfURL:(NSURL *)url usedEncoding:(NSStringEncoding *)enc error:(NSError **)error

指定したURLを自動判別して初期化したNSStringオブジェクトを返します
このメソッドはURLからエンコーディングを決定しようとします
(URLが開けなかったりエンコーディングでエラーになった場合はnilを返します)

url:URLを読み込みます
enc:URLが正常に読み込まれた場合、エンコーディングを設定します
error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します
(エラー内容が不要な場合はNULLを指定します)

NSStringEncoding enc;
NSError *error;
NSString *オブジェクト = [[NSString alloc] initWithContentsOfURL:@"パス" usedEncoding:&enc error:&error];


●ファイルまたはURLヘの書き出し(Writing to a File or URL)

・– writeToFile:atomically:encoding:error:

– (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error

指定したエンコードでパスのファイルに書き出します
(書き出しが正常終了するとYES、異常終了した場合はNOを返します)

path:NSStringオブジェクトを書き出すファイルのパスを指定します
(パスの中にチルダ『~』が含まれている場合、このメソッドを呼び出す前にstringByExpandingTildeInPathで変換をかける必要があります)

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

enc:パスの示しているファイルのエンコーディング

error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します
(エラー内容が不要な場合はNULLを指定します)

NSError *error;
NSString *オブジェクト = [[NSString alloc]initWithString:@"文字列"];
[オブジェクト writeToFile:@"パス" atomically:YES encoding:NSISO2022JPStringEncoding error:&error]; 


・– writeToURL:atomically:encoding:error:

– (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error

指定したエンコードでパスのURLに書き出します

url:NSStringオブジェクトを書き出すURLを指定します

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

enc:パスの示しているURLのエンコーディング

error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します
(エラー内容が不要な場合はNULLを指定します)

NSError *error;
NSString *オブジェクト = [[NSString alloc]initWithString:@"文字列"];
[オブジェクト writeToURL:@"パス" atomically:NO encoding:NSUTF8StringEncoding error:&error];


●文字列の長さの取得(Getting a String's Length)

・– length

– (NSUInteger)length

Unicode文字列の文字数を返します

NSString *オブジェクト = @"文字列";
int len = [オブジェクト length];


・– lengthOfBytesUsingEncoding:

– (NSUInteger)lengthOfBytesUsingEncoding:(NSStringEncoding)enc

指定したエンコーディングに変換した場合に、必要な文字列のバイト数を返します
戻り値のバイト数にはエンコーディング情報も含みます(NULL終端のバイト数は含みません)
指定したエンコーディングで変換できない、または変換した文字列をメモリに格納できなかった(NSIntegerMaxを超える長さ)場合は0を返します

enc:NSStringオブジェクトの長さを求めるエンコーディング

NSString *オブジェクト = @"文字列";
[オブジェクト lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; 


・– maximumLengthOfBytesUsingEncoding:

– (NSUInteger)maximumLengthOfBytesUsingEncoding:(NSStringEncoding)enc

指定したエンコーディングに変換した場合に、必要な文字列の最大バイト数を返します
戻り値のバイト数にはエンコーディング情報も含みます(NULL終端のバイト数は含みません)
指定したエンコーディングで変換できない、または変換した文字列をメモリに格納できなかった(NSIntegerMaxを超える長さ)場合は0を返します

enc:NSStringオブジェクトの長さを求めるエンコーディング

NSString *オブジェクト = @"文字列";
[オブジェクト maximumLengthOfBytesUsingEncoding:NSUTF8StringEncoding];

※ NSIntegerMaxは、NSObjCRuntime.hで

#define    NSIntegerMax    LONG_MAX

と定義され、LONG_MAXはlimits.hで

#define    LONG_MAX    2147483647L    /* max signed long */ 

と定義されています


●文字とバイトの取得(Getting Characters and Bytes)

・– characterAtIndex:

– (unichar)characterAtIndex:(NSUInteger)index

Unicodeの文字配列から指定した数値の位置にある文字を返します

index:文字配列から何文字目かを指定します(文字配列の総文字数内である必要があります)
総文字数を超えたindexを指定した場合、NSRangeExceptionで例外を発生させます

NSString *オブジェクト = @"文字列";

unichar chr = [オブジェクト characterAtIndex:72];


・– getCharacters:

– (void)getCharacters:(unichar *)buffer

指定したバッファ(メモリ領域)にUnicode文字列を書き込みます
バッファオーバーランを引き起こす可能性があるため非推奨(- getCharacters:range:の使用を推奨)

buffer:文字列を格納するバッファを指定します
書き込む文字列を十分に格納できる大きさのバッファが必要です
([string length] * sizeof(unichar))

NSString *オブジェクト = @"文字列";
unichar *chrBuffer = malloc([オブジェクト length] * sizeof(unichar));

[オブジェクト getCharacters:chrBuffer]; 


・– getCharacters:range:

– (void)getCharacters:(unichar *)buffer range:(NSRange)aRange

指定したバッファに、範囲内にあるUnicode文字列を書き込みます
このメソッドではNULL文字を追加しません

buffer:文字列を格納するバッファを指定します
書き込む文字列を十分に格納できる大きさのバッファが必要です
(aRange.length * sizeof(unichar))

aRange:格納する文字列の範囲を指定します
この範囲は書き込む文字列より大きく設定してはいけません
超える範囲を設定した場合、NSRangeExceptionで例外を発生させます

NSString *オブジェクト = @"文字列";
NSRange aRange = NSMakeRange(0,72);
unichar *chrBuffer = malloc(aRange.length * sizeof(unichar));
[オブジェクト getCharacters:chrBuffer range:aRange];


・– getBytes:maxLength:usedLength:encoding:options:range:remainingRange:

– (BOOL)getBytes:(void *)buffer maxLength:(NSUInteger)maxBuffer usedLength:(NSUInteger *)usedBufferCount encoding:(NSStringEncoding)encoding options:(NSStringEncodingConversionOptions)options range:(NSRange)range remainingRange:(NSRangePointer)leftover

指定したバッファに、エンコーディングと範囲を指定したバイト列を書き込みます
(バイト列にNULL終端は含みません)
書き込みが成功すればYESを、失敗した場合はNOを返します
(バッファがいっぱいになって失敗する場合もあれば、エンコーディングの変換ができなかった可能性も考えられます)

buffer:バイト列を格納するバッファを指定します
maxBuffer:バッファの最大バイト数を指定します
usedBufferCount:使用されたバッファのバイト数を格納します(不要の場合はNULLを指定します)
encoding:バイト列のエンコーディングを指定します
options:バイト列に書き込む際にエンコーディングを変換する必要がある場合に指定します
range:バイト列に書き込む範囲を指定します
leftover:指定範囲の内どこまで書き込んだかという結果をポインタで格納します(不要の場合はNULLを指定します)

NSString *オブジェクト = @"文字列";
unsigned char chrBuffer[72];
NSRange aRange = NSMakeRange(0,72);
[オブジェクト getBytes:chrBuffer maxLength:72 usedLength:NULL encoding:NSUTF8StringEncoding options:NSStringEncodingConversionExternalRepresentation range:aRange remainingRange:NULL];

※ sizeof演算子は、引数に渡された型や変数、定数などを渡すとメモリサイズを返すものです


NSRangeは列中の位置と範囲を示す構造体で、NSRange.hで定義されています

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

NSStringEncodingConversionOptionsはエンコーディングの変換を行う際のオプションで、NSString.hで定義されています

typedef NSUInteger NSStringEncodingConversionOptions;

NSString Class ReferenceのNSStringEncodingConversionOptionsの項目で、Discussionの飛び先が同項目を指してループ状態になっていますが、正しくはすぐ下にある『Encoding Conversion Options』です

Encoding Conversion Optionsで、文字列エンコーディングの変換オプションを示しています

enum {
    NSStringEncodingConversionAllowLossy = 1,
    NSStringEncodingConversionExternalRepresentation = 2
};

前者は不可逆変換を、後者は可逆変換を指します

例えばUnicodeからASCIIに変換する場合、不可逆変換では変換しきれない文字は削除ないし置換しようとしますが、可逆変換の場合はバイトオーダーなど必要な情報を残します
(試していないので実際の挙動は分かりません)


●C文字列の取得(Getting C Strings)


・– cStringUsingEncoding:

– (const char *)cStringUsingEncoding:(NSStringEncoding)encoding

指定したエンコーディングでC文字列を返します
エンコーディングの変換で不可逆変換ができなかった場合はNULLを返します

戻り値であるC文字列は、元になるNSStringオブジェクトの文字列が解放される、あるいは自動解放が行われると消滅しますので、必要な場合はgetCString:maxLength:encoding:を使用してください
(自動解放については『Objective-C言語のメモ書き(7)』を参照)

また、canBeConvertedToEncoding:で不可逆変換が可能かをチェックできます
それができない場合はdataUsingEncoding:allowLossyConversion:を使ってC文字列に変換できますが、その場合NULL終端など情報が欠落するので注意が必要です

encoding:C文字列のエンコーディング

NSString *オブジェクト = @"文字列";
[オブジェクト cStringUsingEncoding:NSASCIIStringEncoding]; 


・– getCString:maxLength:encoding:

– (BOOL)getCString:(char *)buffer maxLength:(NSUInteger)maxBufferCount encoding:(NSStringEncoding)encoding

指定したエンコーディングで変換したC文字列をバッファに格納します
成功すればYESを、失敗した場合はNOを返します
(確保したバッファが小さくて失敗する場合もあれば、エンコーディングの変換ができなかった可能性も考えられます)

また、canBeConvertedToEncoding:で不可逆変換が可能かをチェックできます
それができない場合はdataUsingEncoding:allowLossyConversion:を使ってC文字列に変換できますが、その場合NULL終端など情報が欠落するので注意が必要です

buffer:C文字列にNULL終端を付加して格納します
maxBufferCount:NULL終端分を含めたC文字列を格納できるバッファサイズを指定します
encoding:C文字列のエンコーディング

NSString *オブジェクト = @"文字列";
unsigned char chrBuffer[72];
[オブジェクト getCString:chrBuffer maxLength:91 encoding:NSASCIIStringEncoding];


・– UTF8String

– (const char *)UTF8String

NULL終端のUTF8エンコーディングのC文字列を返します
戻り値であるC文字列は、元になるNSStringオブジェクトの文字列が解放される、あるいは自動解放が行われると消滅しますので、必要な場合はコピーを取って下さい

NSString *オブジェクト = @"文字列";
const char *cPtr;
cPtr = [オブジェクト UTF8String];



参考文献

NSString Class Reference

Cocoa APIとか(iPhoneとか)/NSString

Studying Cocoa/NSString

Nothing Upstairs/Cocoaのエンコーディングはどうなっておるのだ?

Cocoa APIとか(iPhoneとか)/stringWithContentsOfFile:

せりか式/C言語チュートリアル/sizeof演算子

iPhone SDK 3 プログラミング大全 実践プログラミング (MacPeople Books)iPhone SDK 3 プログラミング大全 実践プログラミング (MacPeople Books)
(2009/09/08)
木下 誠

商品詳細を見る

詳解 Objective-C 2.0 第3版詳解 Objective-C 2.0 第3版
(2011/12/28)
荻原 剛志

商品詳細を見る

0 CommentsPosted in 資料

NSString(1)

2010. 03. 26
iPhone SDKプログラミング大全』の『3−2 Foundationが提供する機能』で紹介しているクラスをピックアップしていきます。

まず最初はNSStringです。

●文字列の生成と初期化(Creating and Initializing Strings)

・+ string

+ (id)string

空の文字列を返します

NSString *オブジェクト = [NSString string];


- init

- (id)init

初期化した空のNSStringオブジェクトを返します

NSString *オブジェクト = [[NSString alloc] init];


・- initWithBytes:length:encoding:

- (id)initWithBytes:(const void *)bytes length:(NSUInteger)length encoding:(NSStringEncoding)encoding

指定した長さとエンコーディングで初期化したバイト列をNSStringオブジェクトとして返します

bytes:文字列化するバイト列
length:バイト列の長さ
encoding:文字コードのエンコーディング

NSString *オブジェクト = [[NSString alloc] initWithBytes:バイト列 length:長さ encoding:NSUTF8StringEncoding];


・- initWithBytesNoCopy:length:encoding:freeWhenDone:

- (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length encoding:(NSStringEncoding)encoding
 
freeWhenDone:(BOOL)flag

指定した長さとエンコーディングで初期化したバイト列をNSStringオブジェクトとして返します。
またNSStringオブジェクト解放時に元のバイト列を解放するか選択できます。

bytes:文字列化するバイト列
length:バイト列の長さ
encoding:文字コードのエンコーディング
flag:YESの場合、NSStringオブジェクト解放時にバイト列を解放し、NOなら保持します

NSString *オブジェクト = [[NSString alloc] initWithBytes:バイト列 length:長さ encoding:NSShiftJISStringEncoding freeWhenDone:YES];


・– initWithCharacters:length:

– (id)initWithCharacters:(const unichar *)characters length:(NSUInteger)length

UnicodeのC配列から指定した文字数で初期化したNSStringオブジェクトを返します

characters:UnicodeのC配列(値がNULLの場合、例外が発生します)
length:C配列の長さ

NSString *オブジェクト = [[NSString alloc] initWithCharacters:C配列 length:長さ];


・– initWithCharactersNoCopy:length:freeWhenDone:

– (id)initWithCharactersNoCopy:(unichar *)characters length:(NSUInteger)length
 
freeWhenDone:(BOOL)flag

UnicodeのC文字列から指定した文字数で初期化したNSStringオブジェクトを返します。
またNSStringオブジェクト解放時に元のバイト列を解放するか選択できます。

characters:UnicodeのC配列(値がNULLの場合、例外が発生します)
length:C配列の長さ
flag:YESの場合、NSStringオブジェクト解放時にバイト列を解放し、NOなら保持します

NSString *オブジェクト = [[NSString alloc] initWithCharacters:C配列 length:長さ freeWhenDone:YES];


・– initWithString:

– (id)initWithString:(NSString *)aString

指定した文字列のコピーで初期化したNSStringオブジェクトを返します

aString:初期化に用いる文字列

NSString *オブジェクト = [[NSString alloc] initWithString:@"文字列"];


・– initWithCString:encoding:

– (id)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding

NULLで終わるC文字配列を指定したエンコードで初期化したNSStringオブジェクトを返します
(C文字配列がNULL終端でない場合、またはエンコーディングが適切でない場合は未定義になります)

nullTerminatedCString:NULL終端のC文字配列
encoding:C文字配列のエンコーディング

NSString *オブジェクト = [[NSString alloc] initWithCString:"文字列" encoding:NSJapaneseEUCStringEncoding];


・– initWithUTF8String:

– (id)initWithUTF8String:(const)bytes

NULLで終わるUTF-8エンコーディングのC文字列のコピーで初期化したNSStringオブジェクトを返します
(NULL終端でない場合は例外が発生します)

bytes:UTF-8エンコーディングのNULL終端C文字列

NSString *オブジェクト = [[NSString alloc] initWithUTF8String:"文字列"];


・– initWithFormat:

– (id)initWithFormat:(NSString *)format ...

指定したフォーマット(書式)で初期化したNSStringオブジェクトを返します
formatがnilの場合、NSInvalidArgumentExceptionを呼び出します)

format:文字列の書式を指定します。nilを指定することはできません
...:カンマ区切りで値を指定します

NSString *オブジェクト = [[NSString alloc] initWithFormat:@"BST-%d-CHIHAYA", 72];


・– initWithFormat:arguments:

– (id)initWithFormat:(NSString *)format arguments:(va_list)argList

指定したフォーマットと可変引数リストで初期化したNSStringオブジェクトを返します
formatがnilの場合、NSInvalidArgumentExceptionを呼び出します)

format:文字列の書式を指定します。nilを指定することはできません
argList:可変引数リスト

va_list argList;
va_start(argList, 書式)
NSString *オブジェクト = [[NSString alloc] initWithFormat:書式 arguments:argList];
va_end(argList); 


・– initWithFormat:locale:

– (id)initWithFormat:(NSString)format locale:(id)locale ...

指定したフォーマットとロケールで初期化したNSStringオブジェクトを返します
formatがnilの場合、NSInvalidArgumentExceptionを呼び出します)

format:文字列の書式を指定します。nilを指定することはできません
locale:NSDictionaryかNSLocaleのインスタンスで指定し、nilの場合標準のロケールになります
ロケールの指定にdictionaryで環境設定から標準(デフォルト)のロケールを設定する場合は、[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]を使います

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
NSString *オブジェクト = [[NSString alloc] initWithFormat:書式 locale:locale, [NSDate date]];


・– initWithFormat:locale:arguments:

– (id)initWithFormat:(NSString *)format locale:(id)locale arguments:(va_list)argList

指定したフォーマットとロケール、可変引数リストで初期化したNSStringオブジェクトを返します
formatがnilの場合、NSInvalidArgumentExceptionを呼び出します)

format:文字列の書式を指定します。nilを指定することはできません
locale:NSDictionaryかNSLocaleのインスタンスで指定し、nilの場合標準のロケールになります
ロケールの指定にdictionaryで環境設定から標準(デフォルト)のロケールを設定する場合は、[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]を使います
argList:可変引数リスト

va_list argList;
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP";
va_start(argList, 書式)
NSString *オブジェクト = [[NSString alloc] initWithFormat:書式  locale:locale arguments:argList];
va_end(argList);


・– initWithData:encoding:

– (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding

指定したエンコードで変換したデータで初期化したNSStringオブジェクトを返します

data:バイト列のNSDataオブジェクト
encoding:C文字配列のエンコーディング

NSString *オブジェクト = [[NSString alloc] initWithData:バイト列 encoding:NSUTF8StringEncoding];


・+ stringWithFormat:

+ (id)stringWithFormat:(NSString *)format,...

指定したフォーマットで作った引数リストの文字列を返します
formatがnilの場合、NSInvalidArgumentExceptionを呼び出します)

format:文字列の書式を指定します。nilを指定することはできません

NSString *オブジェクト = [NSString stringWithFormat:書式, 引数リスト];


・+ localizedStringWithFormat:

+ (id)localizedStringWithFormat:(NSString *)format ...

デフォルトのロケールで作った引数リストの文字列を返します
formatがnilの場合、NSInvalidArgumentExceptionを呼び出します)

format:文字列の書式を指定します。nilを指定することはできません

NSString *オブジェクト = [NSString localizedStringWithFormat:書式, 引数リスト];


・+ stringWithCharacters:length:

+ (id)stringWithCharacters:(const unichar *)chars length:(NSUInteger)length

UnicodeのC文字列から指定した文字数で作った文字列を返します

chars:UnicodeのC配列(値がNULLの場合、例外が発生します)
length:C文字列から使用する文字列の長さ

NSString *オブジェクト = [NSString stringWithCharacters:C配列 length:長さ];


・+ stringWithString:

+ (id)stringWithString:(NSString *)aString

指定した文字列のコピーで作った文字列を返します

aString:コピー元になるNSStringオブジェクトの文字列
(aStringがnilの場合、NSInvalidArgumentExceptionを呼び出します)

NSString *オブジェクト = [NSString stringWithString:@"文字列"];


・+ stringWithCString:encoding:

+ (id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc

C文字列を指定したエンコーディングで作り、返します
(C文字列がNULL終端でない、または指定したエンコーディングと実際のC文字列のエンコーディングが合っていない場合は結果が未定義になります)

cString:NULL終端のC文字列(途中にNULLが入っていてはいけません)
enc:C文字列のエンコーディング

NSString *オブジェクト = [NSString stringWithCString:"文字列", encoding:NSShiftJISStringEncoding];


・+ stringWithUTF8String:

+ (id)stringWithUTF8String:(const char *)bytes

UTF8エンコードのC文字列をコピーして作った文字列を返します

bytes:UTF-8エンコーディングのC文字列
(NULL終端でない場合は例外が発生します)

NSString *オブジェクト = [NSString stringWithUTF8String:"文字列"];



参考文献

Foundation Framework Reference

NSString Class Reference

Cocoa APIとか(iPhoneとか)/NSString

Studying Cocoa/NSString

iPhone SDK 3 プログラミング大全 実践プログラミング (MacPeople Books)iPhone SDK 3 プログラミング大全 実践プログラミング (MacPeople Books)
(2009/09/08)
木下 誠

商品詳細を見る

詳解 Objective-C 2.0 第3版詳解 Objective-C 2.0 第3版
(2011/12/28)
荻原 剛志

商品詳細を見る

0 CommentsPosted in 資料

Calendar
02 | 2010/03 | 04
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
Wish List
iOS/iPadOS Devices
Twine
Twine Reference
1. 序章
2. はじめに
2.1. Twineのインストール
2.2. 基本コンセプト
2.3. Twineを使いこなす
2.4. Twineのアップデート
2.5. Twineのアンインストール
2.6. Twineの古いバージョンを使う
3. ストーリーライブラリを使う
3.1. ストーリーの表示
3.2. ストーリーの作成、コピー、インポート
3.3. ストーリーの編集
3.4. ストーリー名の変更
3.5. ストーリーのアーカイブとエクスポート
3.6. ストーリーの削除
3.7. ストーリーへのタグ付け
3.8. ライブラリの場所を変更する
4. ストーリーの編集
4.1. ストーリーマップのナビゲーション
4.2. 取り消しとやり直し
4.3. パッセージの選択と移動
4.4. パッセージの編集
4.5. パッセージのリンク
4.6. パッセージの削除
4.7. パッセージのタグ付け
4.8. テキストの検索と置換
4.9. ストーリー名の変更
4.10. ストーリーフォーマットの変更
4.11. ストーリーの統計の表示
4.12. ストーリーのJavaScriptとCSSを編集する
5. 作品の公開出力
5.1. ストーリーのテスト
5.2. ストーリーの校正
5.3. ストーリーのプレイ
5.4. ストーリーの公開出力
5.5. スクラッチフォルダ
6. ストーリーフォーマットの管理
6.1. ストーリーフォーマットの表示
6.2. デフォルトのストーリーフォーマットの変更
6.3. 校正フォーマットの変更
6.4. ストーリーフォーマットの追加
6.5. ストーリーフォーマットの削除
6.6. ストーリーフォーマットの拡張機能を無効にする
6.7. Twineがストーリーフォーマットのバージョンを管理する方法
7. Twineのカスタマイズ
7.1. 環境設定の設定
7.2. コマンドラインスイッチ
7.3. 高度なカスタマイズ
8. 制限事項
8.1. 大きなストーリー
8.2. ストーリーの組み合わせ
8.3. ストーリーの共同編集
8.4. 画像とマルチメディアの使用
8.5. ソースコントロールでの作業
9. 問題のトラブルシューティング
9.1. バックアップ
9.2. ローカルストレージの直接表示
9.3. 編集中にエラーメッセージが表示される場合
9.4. Twineが起動しない場合
9.5. Twineがあなたのストーリーを失ったら
9.6. ストーリーが破損している場合
9.7. Twineの外観に不具合がある場合
10. リリースノート
10.1. バージョン 2.8
10.2. バージョン 2.7
10.3. バージョン 2.6
10.4. バージョン 2.5
10.5. バージョン 2.4
10.6. バージョン 2.3
10.7. バージョン 2.2
10.8. バージョン 2.1
10.9. バージョン 2.0
10.10. バージョン 1.0
10.11. Tweebox バージョン

Twine Cookbook
詳解Swift
詳解Swift第5版(01)〜Swiftでプログラミング
詳解Swift第5版(02)〜関数
詳解Swift第5版(03)〜構造体
詳解Swift第5版(04)〜オプショナル
詳解Swift第5版(05)〜プロトコル
詳解Swift第5版(06)〜基本的なデータ型
詳解Swift第5版(07)〜パターン
詳解Swift第5版(08)〜クラスと継承
詳解Swift第5版(09)〜メモリ管理
詳解Swift第5版(10)〜拡張
詳解Swift第5版(11)〜エラー処理
詳解Swift第5版(12)〜クロージャ
詳解Swift第5版(13)〜ジェネリクス
詳解Swift第5版(14)〜メモリへのアクセスとポインタ
詳解Swift第5版(15)〜カスタム属性とDSL記法
詳解Swift第5版(16)〜GUI との連携

詳解Swift第4版(01)〜Swiftでプログラミング
詳解Swift第4版(02)〜関数
詳解Swift第4版(03)〜構造体
詳解Swift第4版(06)〜基本的なデータ型
詳解Swift第4版(07)〜パターン
詳解Swift第4版(08)〜クラスと継承
詳解Swift第4版(09)〜メモリ管理
詳解Swift第4版(10)〜拡張
詳解Swift第4版(11)〜エラー処理
詳解Swift第4版(12)〜クロージャ
詳解Swift第4版(13)〜ジェネリクス

詳解Swift第3版(01)〜Swiftでプログラミング
詳解Swift第3版(02)〜関数
詳解Swift第3版(03)〜構造体
詳解Swift第3版(05)〜基本的なデータ型
詳解Swift第3版(06)〜パターン
詳解Swift第3版(07)〜演算子
詳解Swift第3版(08)〜クラスと継承
詳解Swift第3版(09)〜メモリ管理
詳解Swift第3版(10)〜プロトコル
詳解Swift第3版(11)〜拡張
詳解Swift第3版(12)〜エラー処理
詳解Swift第3版(13)〜クロージャ
詳解Swift第3版(14)〜ジェネリクス

詳解Swift改訂版(01)〜Swiftでプログラミング
詳解Swift改訂版(02)〜関数
詳解Swift改訂版(03)〜構造体
詳解Swift改訂版(04)〜オプショナル
詳解Swift改訂版(05)〜基本的なデータ型
詳解Swift改訂版(06)〜パターン
詳解Swift改訂版(07)〜演算子
詳解Swift改訂版(08)〜クラスと継承
詳解Swift改訂版(09)〜メモリ管理
詳解Swift改訂版(10)〜プロトコル
詳解Swift改訂版(11)〜拡張
詳解Swift改訂版(12)〜エラー処理
詳解Swift改訂版(13)〜クロージャ
詳解Swift改訂版(14)〜ジェネリクス

詳解Swift(1)〜Swiftでプログラミング
詳解Swift(2)〜関数
詳解Swift(3)〜構造体
詳解Swift(4)〜オプショナル
詳解Swift(5)〜基本的なデータ型
詳解Swift(6)〜パターン
詳解Swift(7)〜演算子
詳解Swift(8)〜クラスと継承
詳解Swift(9)〜メモリ管理
詳解Swift(10)〜プロトコル
詳解Swift(11)〜拡張
詳解Swift(12)〜クロージャ
詳解Swift(13)〜ジェネリクス
詳解Swift(14)〜C/Objective-Cとのデータ受け渡し
Swift
Site Map
Apple Music


Categories
Tips
ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
QR Code
QR
Profile

水月杏香

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

Visitors