Ios 无法成功从邮件下载图像和PDF

Ios 无法成功从邮件下载图像和PDF,ios,objective-c,ipad,ios7,mailcore,Ios,Objective C,Ipad,Ios7,Mailcore,我是IOS开发新手,从邮件下载附件时遇到问题。当我尝试使用MailCore2 SDK从邮件目录下载图像或PDF附件到文档目录时,下载成功。但我的问题是,下载的图像或PDF不显示任何内容,即。,。它给了我一个文件,但有一个零字节的空文件。我知道问题出在NSData上,我用来写的文件不正确。但我无法解决它。请帮助我 这是我用来从邮件下载文件的代码 MCOIMAPFetchContentOperation * op = [self.imapSession fetchMessageByUIDOperat

我是IOS开发新手,从邮件下载附件时遇到问题。当我尝试使用MailCore2 SDK从邮件目录下载图像或PDF附件到文档目录时,下载成功。但我的问题是,下载的图像或PDF不显示任何内容,即。,。它给了我一个文件,但有一个零字节的空文件。我知道问题出在NSData上,我用来写的文件不正确。但我无法解决它。请帮助我

这是我用来从邮件下载文件的代码

MCOIMAPFetchContentOperation * op = [self.imapSession fetchMessageByUIDOperationWithFolder:@"INBOX" uid:[sender tag]];

[op start:^(NSError * error, NSData * data) {
    if ([error code] != MCOErrorNone) {
        return;
    }
    NSAssert(data != nil, @"data != nil");

    MCOMessageParser * msg = [MCOMessageParser messageParserWithData:data];

    if ([msg.attachments count] > 0)
    {
        MCOIMAPPart *part = [msg.attachments objectAtIndex:0];

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

        NSString *saveDirectory = [paths objectAtIndex:0];
        NSLog(@"%@",part.filename);

        NSString *attachmentPath = [[saveDirectory stringByAppendingString:@"/Downloads"] stringByAppendingPathComponent:part.filename];

        if (fileExists) {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Message"
                                                            message:@"Fail Existed in Download Path."
                                                           delegate:self
                                                  cancelButtonTitle:@"OK"
                                                  otherButtonTitles:nil];
            [alert show];
        }
        else{

            [msg.data writeToFile:attachmentPath atomically:YES];

            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Message"
                                                            message:@"Download Success /n Saved in Downloads"
                                                           delegate:self
                                                  cancelButtonTitle:@"OK"
                                                  otherButtonTitles:nil];
            [alert show];
        }
        [self.tableView reloadData];
    }
}];
请帮我摆脱这个问题,告诉我哪里出了错

提前谢谢。

我以前是这样用的: MCOIMAPFetchContentOperation*op=[self.imapsSession fetchMessageByUIDOperationWithFolder:@INBOX uid:[发件人标记]]; [操作开始:^N错误*错误,NSData*数据 { 如果[错误代码]!=mcoErrorOne { 回来 } NSAssertdata!=nil,@data!=nil; MCOMessageParser*msg=[MCOMessageParser messageParserWithData:data]; 如果[msg.attachments count]>0 {
MCOAttachment*附件=[msg.attachments objectAtIndex:0]; NSArray*path=nsSearchPathForDirectoriesIndomainsDocumentDirectory,NSUserDomainMask,是; NSString*saveDirectory=[path objectAtIndex:0]; NSLog@%@,attachment.filename; NSString*downLoadDirectory=[saveDirectory stringByAppendingString:@/Downloads]; 如果![[NSFileManager defaultManager]文件存在路径:下载目录] { [[NSFileManager defaultManager]createDirectoryAtPath:downLoadDirectory with IntermediateDirectory:YES属性:nil错误:nil]; } NSString*attachmentPath=[downLoadDirectory stringByAppendingPathComponent:attachment.filename]; 如果[[NSFileManager defaultManager]文件ExistSatPath:attachmentPath] { UIAlertView*警报=[[UIAlertView alloc]initWithTitle:@Message 消息:@下载路径中存在失败。 代表:赛尔夫 取消按钮:@好的 其他按钮:无]; [警报显示]; } 其他的 { BOOL res=[[attachment data]writeToFile:attachmentPath原子路径:YES]; 如果存在 { UIAlertView*警报=[[UIAlertView alloc]initWithTitle:@Message 消息:@Download Success/n已保存在下载中 代表:赛尔夫 取消按钮:@好的 其他按钮:无]; [警报显示]; } } }
}];有人帮我吗…[msg.attachments objectAtIndex:0];是一个MCOAttachment,不是MCOIMAPPart。然后,您必须使用part.data而不是msg.data来获取附件的内容。