2012-09-27 14 views
5

üzerinde biçim dizesi tarafından kullanılmayan IOS6 için 4.5?HATA veri argüman ben HATA</p> <p>başka kimse bu var ya Xcode bu sabit Has 'biçim dizesi tarafından kullanılmayan veri argümanı' alıyorum neden biraz kafam karıştı mySLComposerSheet

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

} 

cevap

11

sahip hata oldukça kendini açıklayıcıdır şudur: stringWithFormat kullandıkça, size biçim dizesinde bazı biçimlendirme yer tutucu sağlamak gerekiyordu (bir nesne için bir yer tutucu olarak %@, tamsayılar için %d, %f olarak benzeri tüm printf benzeri yöntemlerde olduğu gibi, bir floatın yer tutucusu, vb.).

Ama hiç kullanmıyorsunuz. Böylece, biçim dizgisi dizgesinden sonra (0 yer tutucu) kullanılmayan argüman mySLComposerSheet.serviceType ve burada işe yaramaz. Böylece "veri argümanı (yani mySLComposerSheet.serviceType) biçim dizgisi tarafından kullanılmadığı" hatası.


Yani ne yapmak niyetinde bağlı çözeltisi:

  • gerçekten dizede bir yere serviceType eklemek istiyorsanız, basitçe eklemek %@ (serviceType bir NSString*, böylece olduğu gibi bir nesne) yer tutucu, biçim dizginizde, konumunuzu mySLComposerSheet.serviceType değerinin ekleneceği konumda. Örneğin:

    [mySLComposerSheet setInitialText:[NSString stringWithFormat:@"I'm listening to Boilerroom Recordings via the Boilerroom iPhone Application and want to share it using %@ !",mySLComposerSheet.serviceType]]; 
    
  • Ama (eğer ilk etapta bu argüman eklendi Acaba neden) aslında size initialText dizede yerde serviceType değeri eklemek istemiyorum tahmin. Bu durumda, aramanızın bu gereksiz ek argümanını stringWithFormat:'a kaldırabilirsiniz. Ya da daha iyisi, o noktada sizin stringWithFormat çağrı, hiç bu zatenstringWithFormat kullanmak tamamen yararsız olan herhangi bir biçimde yer tutucusu %@ gibi olmaz çünkü böylece basitçe doğrudan literal dizeyi kullanın! Tavsiyenize

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

sayesinde, artık HizmetTürü çıkarmak İhtiyaç olmadığında gibi ve o inşaat büyük! Tekrar teşekkürler. –