2012-09-27 18 views
5

पर प्रारूप स्ट्रिंग द्वारा नहीं किया जाता मैं थोड़ा कारण है कि मैं त्रुटित्रुटि डेटा तर्क mySLComposerSheet

किसी और यह मिल गया या Xcode में यह तय किया है 'प्रारूप स्ट्रिंग द्वारा नहीं किया जाता डेटा तर्क' हो रही है पर संदेह में हूँ आईओएस 6 के लिए 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; 
    } 
}]; 

} 

उत्तर

11

त्रुटि आपके पास काफी आत्म explainatory है: के रूप में आप stringWithFormat उपयोग करते हैं, तो आप अपने प्रारूप स्ट्रिंग में कुछ स्वरूपण प्लेसहोल्डर प्रदान करने वाले हैं (जैसे %@ एक वस्तु के लिए एक प्लेसहोल्डर के रूप में, पूर्णांकों के लिए %d, %f के रूप में एक फ्लोट, आदि के प्लेसहोल्डर, जैसे सभी प्रिंटफ-जैसी विधियों में)।

लेकिन आप किसी का भी उपयोग नहीं करते हैं। तो प्रारूप स्ट्रिंग के बाद डाला गया mySLComposerSheet.serviceType प्रारूप स्ट्रिंग (कोई प्लेसहोल्डर) द्वारा उपयोग नहीं किया जाता है और यहां बेकार है। इस प्रकार त्रुटि यह कह रही है कि "डेटा तर्क (अर्थात् mySLComposerSheet.serviceType) प्रारूप स्ट्रिंग द्वारा उपयोग नहीं किया जाता है"।


तो समाधान तुम क्या करने का इरादा रखते हैं, उसके आधार पर:

  • तुम सच में अपने स्ट्रिंग में कहीं serviceType सम्मिलित करना चाहते हैं, तो बस जोड़ने के एक %@ (के रूप में serviceType एक NSString*, इस प्रकार है एक ऑब्जेक्ट) प्लेसहोल्डर, आपकी प्रारूप स्ट्रिंग में, स्थिति में 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"]; 
    
+0

आपकी सलाह के लिए धन्यवाद, अब मैं ServiceType बाहर ले यह आवश्यक है के रूप में नहीं है और यह महान काम करता है! एक बार फिर धन्यवाद। –

संबंधित मुद्दे