1. ホーム
  2. objective-c

[解決済み] 警告 "format が文字列リテラルでなく、format の引数がない場合"

2022-09-28 14:56:03

質問

最新の Xcode 3.2.1 と Snow Leopard にアップグレードしてから、次のような警告が表示されるようになりました。

"format not a string literal and no format arguments"

を以下のコードから削除してください。

NSError *error = nil;

if (![self.managedObjectContext save:&error]) 
{
    NSLog([NSString stringWithFormat:@"%@ %@, %@", 
       errorMsgFormat, 
       error, 
       [error userInfo]]);      

}

もし errorMsgFormatNSString に書式指定子をつけたものです (例 "print me like this: %@" のように)、何が問題なのかというと、上記の NSLog の呼び出しの何が問題なのでしょうか?また、警告が発生しないように修正するために推奨される方法は何ですか?

どのように解決するのですか?

括弧を正しくネストしていますか?私はそうは思わない NSLog() は引数を1つしか取らないのが好きではないようです。また、それはすでにあなたのために書式設定を行います。なぜこれをしないのでしょうか?

NSLog(@"%@ %@, %@", 
   errorMsgFormat, 
   error, 
   [error userInfo]);              

あるいは、あなたが言うように errorMsgFormat はプレースホルダーが1つのフォーマット文字列であることから、これを行おうとしているのでしょうか?

NSLog(@"%@, %@", [NSString stringWithFormat:errorMsgFormat, error], 
   [error userInfo]);