web-dev-qa-db-ja.com

NSLogを使用してデバッグする

Xcodeに次のコードスニペットがあります。

_NSString *digit [[sender titlelabel] text];
NSLog([digit]);
_

アプリケーションをビルドしようとしましたが、次の警告メッセージが表示されますNSLog([digit]);

_Warning: Format not a string literal and no format arguments
_

この警告メッセージを解決する方法を教えてください。メッセージの実際の意味は何ですか?

26
Zhen

次のコードを試してください。

NSString *digit = [[sender titlelabel] text];
NSLog(@"%@", digit);

このメッセージは、digit変数を使用するための構文が正しくないことを意味します。メッセージを送信していない場合は、角かっこは必要ありません。

50
Eimantas

NSLog()を次のように使用します。

_NSLog(@"The code runs through here!");
_

または、このように-プレースホルダーを使用:

_float aFloat = 5.34245;
NSLog(@"This is my float: %f \n\nAnd here again: %.2f", aFloat, aFloat);
_

NSLog()では、+ (id)stringWithFormat:(NSString *)format, ...のように使用できます

_float aFloat = 5.34245;
NSString *aString = [NSString stringWithFormat:@"This is my float: %f \n\nAnd here again: %.2f", aFloat, aFloat];
_

他のプレースホルダーも追加できます。

_float aFloat = 5.34245;
int aInteger = 3;
NSString *aString = @"A string";
NSLog(@"This is my float: %f \n\nAnd here is my integer: %i \n\nAnd finally my string: %@", aFloat, aInteger, aString);
_
25
Fabio Poloni

なぜdigitを囲んでいるのですか?そのはず

NSLog("%@", digit);

また、=最初の行に...

NSString *digit = [[sender titlelabel] text];

5
NSLog(@"%@", digit);

コンソールに何が表示されますか?

3
0xDE4E15B

警告で説明しようとするNSLogを使用する適切な方法は、リテラルを渡す代わりにフォーマッタを使用することです。

の代わりに:

NSString *digit = [[sender titlelabel] text];
NSLog(digit);

つかいます:

NSString *digit = [[sender titlelabel] text];
NSLog(@"%@",digit);

最初の方法でも引き続き機能しますが、この方法で行うと警告はなくなります。

3
Wayne Hartman

タイプ:BOOL DATA(YES/NO)OR(1/0)

BOOL dtBool = 0; 

OR

BOOL dtBool = NO;
NSLog(dtBool ? @"Yes" : @"No");

出力:いいえ

タイプ:ロング

long aLong = 2015;
NSLog(@"Display Long: %ld”, aLong);

出力:長い表示:2015

long long veryLong = 20152015;
NSLog(@"Display very Long: %lld", veryLong);

出力:非常に長い表示:20152015

タイプ:文字列

NSString *aString = @"A string";
NSLog(@"Display string: %@", aString);

OUTPUT:表示文字列:文字列

タイプ:フロート

float aFloat = 5.34245;
NSLog(@"Display Float: %F", aFloat);

出力:isplay Float:5.342450

タイプ:整数

int aInteger = 3;    
NSLog(@"Display Integer: %i", aInteger);

出力:表示整数:3

NSLog(@"\nDisplay String: %@ \n\n Display Float: %f \n\n Display Integer: %i", aString, aFloat, aInteger);

OUTPUT:文字列:文字列

表示フロート:5.342450

表示整数:3

http://luterr.blogspot.sg/2015/04/example-code-nslog-console-commands-to.html

2
Luter Rinding