5

エラー「フォーマット文字列で使用されていないデータ引数」が表示される理由に少し混乱しています

iOS6 の Xcode 4.5 で、他の誰かがこれを取得したり、これを修正したりしましたか?

- (IBAction)facebookPost:(id)sender
{
if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
{
    mySLComposerSheet = [[SLComposeViewController alloc] init];
    mySLComposerSheet = [SLComposeViewController  composeViewControllerForServiceType:SLServiceTypeFacebook];

    [mySLComposerSheet setInitialText:[NSString stringWithFormat:@"I'm listening to Boilerroom Recordings via the Boilerroom iPhone Application",mySLComposerSheet.serviceType]];

    [mySLComposerSheet addImage:[UIImage imageNamed:@"BOILERROOM_LOGO_250x250.png"]];
    [self presentViewController:mySLComposerSheet animated:YES completion:nil];
}
[mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
    NSLog(@"dfsdf");
    switch (result) {
        case SLComposeViewControllerResultCancelled:
            break;
        case SLComposeViewControllerResultDone:
            break;
        default:
            break;
    }
}];

}
4

1 に答える 1

11

あなたが持っているエラーは非常に自明です: を使用するstringWithFormatと、フォーマット文字列にフォーマットプレースホルダーを提供することになっています (%@オブジェクトのプレースホルダー、%d整数%fのプレースホルダー、フロートのプレースホルダーなど、すべてのように) printf のようなメソッド)。

しかし、あなたは何も使いません。したがって、mySLComposerSheet.serviceTypeフォーマット文字列の後に配置した引数は、フォーマット文字列では使用されず (プレースホルダーなし)、ここでは役に立ちません。したがって、「データ引数(つまりmySLComposerSheet.serviceType)はフォーマット文字列で使用されていません」というエラーが表示されます。


したがって、あなたが何をしようとしているのかに応じた解決策:

  • serviceType本当に文字列のどこかにを挿入したい場合は、フォーマット文字列の挿入する値の位置にプレースホルダーを追加する%@だけです。例えば:serviceTypeNSString*mySLComposerSheet.serviceType

    [mySLComposerSheet setInitialText:[NSString stringWithFormat:@"I'm listening to Boilerroom Recordings via the Boilerroom iPhone Application and want to share it using %@ !",mySLComposerSheet.serviceType]];
    
  • しかし、実際には、initialText 文字列のどこにも値を挿入したくないと思いserviceTypeます (最初にこの引数を追加した理由は不思議です)。その場合、 への呼び出しのこの無用な追加引数を単純に削除できますstringWithFormat:。または、その時点でstringWithFormat呼び出しにフォーマットプレースホルダー%@がまったくないため、これを使用してもまったく役に立たないstringWithFormatため、文字列リテラルを直接使用するだけです!

    [mySLComposerSheet setInitialText:@"I'm listening to Boilerroom Recordings via the Boilerroom iPhone Application"];
    
于 2012-09-27T12:34:32.967 に答える