2012-09-27 6 views
5

Estoy un poco confundido por qué estoy consiguiendo el error 'argumento de datos no utilizados por el formato de cadena'ERROR no utilizado por cadena de formato en mySLComposerSheet

Ha nadie tiene tal o fijo esta en Xcode 4.5 para 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; 
    } 
}]; 

} 

Respuesta

11

El error que tiene es bastante auto-explainatory: como se utiliza stringWithFormat, que se supone que proporcionar algún marcador de posición de formato en la cadena de formato (como %@ como un marcador de posición para un objeto, %d para enteros, %f como un marcador de posición de un flotador, etc., como en todos los métodos tipo printf).

Pero no usa ninguna. Entonces, el argumento mySLComposerSheet.serviceType que pones después de la cadena de formato no es utilizado por la cadena de formato (sin marcador de posición) y aquí no sirve. Por lo tanto, el error que dice que "el argumento de datos (es decir, mySLComposerSheet.serviceType) no es utilizado por la cadena de formato".


Así que la solución en función de lo que va a hacer:

  • Si realmente desea insertar el serviceType en algún lugar de la cadena, sólo tiene que añadir un %@ (como serviceType es un NSString*, por lo tanto un objeto) marcador de posición en su cadena de formato, en la posición en la que se inserta el valor de mySLComposerSheet.serviceType. Por ejemplo:

    [mySLComposerSheet setInitialText:[NSString stringWithFormat:@"I'm listening to Boilerroom Recordings via the Boilerroom iPhone Application and want to share it using %@ !",mySLComposerSheet.serviceType]]; 
    
  • Pero supongo que en realidad no desea insertar el valor serviceType en cualquier lugar de la cadena de initialText (Me pregunto por qué ha añadido este argumento en el primer lugar). En ese caso, simplemente puede eliminar este argumento adicional inútil de su llamada al stringWithFormat:. O mejor, porque en ese momento su llamada stringWithFormat no tendrá ningún formato de marcador de posición como %@ en absoluto, esto es totalmente inútil utilizar stringWithFormat todos modos, por lo simplemente utilizar la cadena literal directamente!

    [mySLComposerSheet setInitialText:@"I'm listening to Boilerroom Recordings via the Boilerroom iPhone Application"]; 
    
+0

Gracias por su consejo, tengo ahora sacar la tipoServicio ya que no es necesaria y funciona muy bien! Gracias de nuevo. –

Cuestiones relacionadas