2011-07-25 5 views
0

私はObjective-Cの新機能で、C++から切り替えるので、愚かな疑問を言い訳にします。Obj-C文字列の整数値を返す

NSLogsと私は知っていますが、NSLog(@"%d is the index",i);は有効な構文です。この理由は何ですか:return [UIImage imageNamed:@"cover_%d.jpg", value];ではありませんか?

IDEでエラーが発生し、引数が多すぎる、つまり整数が使用されていないことがわかりました。ログに記録されていない状況に反映させるにはどうすればよいですか?

答えて

7

[UIImage imageNamed:[NSString stringWithFormat:@"cover_%d.jpg", value]];

文字列リテラル構文は、フォーマットをサポートしていません。

2

%d(など)の構文は、NSLogのような特定の関数で使用される特定の規則であり、任意のメソッド呼び出しで動作する汎用Objective-C操作ではありません。

幸いにも、%置換をサポートする別の方法はNSSTRing -stringWithFormat:です。このメソッドを使用して、置換を使用して文字列を作成し、その文字列を必要に応じて使用します。たとえば、次のように

NSString *imgName = [NSString stringWithFormat:@"cover_%d.jpg", value]; 
return [UIImage imageNamed:imgName]; 

(あなたはまた、一時的なimgName変数を排除し、単一の式にこれらの2行を組み合わせることができ)

関連する問題