mySLComposerSheet上的格式字符串未使用ERROR数据参数

时间:2012-09-27 12:29:55

标签: iphone xcode ios6 xcode4.5

我有点困惑为什么我得到的格式字符串'

没有使用ERROR'数据参数

有没有其他人在Xcode 4.5 for iOS6中获得此功能或修复此问题?

- (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;
    }
}];

}

1 个答案:

答案 0 :(得分:11)

您遇到的错误非常自我解释:当您使用stringWithFormat时,您应该在格式字符串中提供一些格式化占位符(如%@作为对象的占位符,{{ 1}}表示整数,%d作为浮点数的占位符等,就像所有类似printf的方法一样。)

但你不要使用任何。因此,格式字符串之后放置的参数%f未被格式字符串(没有占位符)使用,并且在此处无用。因此,错误说“数据参数(即mySLComposerSheet.serviceType)未被格式字符串”使用。


所以解决方案取决于你打算做什么:

  • 如果您确实要在字符串中的某处插入mySLComposerSheet.serviceType,只需添加serviceType(因为%@serviceType,因此是对象)占位符在您的格式字符串中,在您要插入的NSString*值的位置。例如:

    mySLComposerSheet.serviceType
  • 但我想你实际上并不想在initialText字符串中的任何地方插入[mySLComposerSheet setInitialText:[NSString stringWithFormat:@"I'm listening to Boilerroom Recordings via the Boilerroom iPhone Application and want to share it using %@ !",mySLComposerSheet.serviceType]]; 值(我想知道为什么你在第一个地方添加了这个参数)。在这种情况下,您可以简单地删除对serviceType的调用的这个无用的附加参数。或者更好,因为此时您的stringWithFormat:电话根本不会有任何格式占位符,例如stringWithFormat完全没用{{1}无论如何,所以只需直接使用字符串文字

    %@