0

私はこの問題を検索しましたが、答えが見つからなかったため、最初の質問をここに書きました。

問題は、以下のメソッドを呼び出すボタンを押すと、この行で例外が発生する[self presentModalViewController:mailViewController animated:YES];ことです。例外は次のとおりです。

*キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。理由: '-[NSCFString カウント]: 認識されないセレクターがインスタンス 0x20f6c に送信されました'

さらに、それが役立つ場合は、シミュレーターでアプリを実行しています。

コードの大部分はhereから取得しました。

これが私のコードです(メールアドレスは空白になっています):

    // set up the email address array
    NSArray *email = [[NSArray alloc] initWithObjects:@"foo", nil];

    // Set up the view controller
    MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];
    mailViewController.mailComposeDelegate = self;

    // Set up the email to send to
    [mailViewController setSubject:@"foo"];
    [mailViewController setToRecipients:[email objectAtIndex:0]];

    // Get the path to the plist
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsPath = [paths objectAtIndex:0];  
    NSString *path = [documentsPath stringByAppendingPathComponent:@"foo.plist"];

    // Get the plist from the path
    NSData *myData = [NSData dataWithContentsOfFile:path];
    [mailViewController addAttachmentData:myData mimeType:@"plist" fileName:@"foo"];

    // Fill out the email body text 
    NSString *emailBody = @"Attached PLIST file";
    [mailViewController setMessageBody:emailBody isHTML:NO];

    // Release the array
    [email release];

    if (mailViewController != nil) {
        [self presentModalViewController:mailViewController animated:YES];
        [mailViewController release];
    }

例外の原因は何ですか?

4

2 に答える 2

2

setToRecipients文字列ではなく、配列を指定する必要があります。したがって、-array を渡すことができますemail

于 2011-04-05T10:16:30.003 に答える
1
-(IBAction)btnemail:(id)sender{
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;

[picker setSubject:@"subject"];
NSString *emailid=btnEmail.titleLabel.text;
NSArray *toRecipients = [NSArray arrayWithObject:emailid];
[picker setToRecipients:toRecipients];

NSString *emailBody = @"";
[picker setMessageBody:emailBody isHTML:NO];

if ([MFMailComposeViewController canSendMail]) {
    [self.parentViewController presentModalViewController:picker animated:YES];
}else {

}
[picker release];

}

于 2011-04-05T10:17:01.590 に答える