Objective c mcoimapidle操作问题

Objective c mcoimapidle操作问题,objective-c,ios7,mailcore2,Objective C,Ios7,Mailcore2,我是IOS开发的新手,我正在使用MailCore2API制作一个应用程序。 公司已经告诉我使用MCOIMApIdleOperation从Gmail服务器获取电子邮件。 我一直在谷歌上寻找解决方案,但这并不值得。 下面是有关问题的详细信息, 首先,我想通过MCOIMAPIdleOperation从收件箱文件夹加载电子邮件。下面是我获取电子邮件的代码 - (void)viewDidLoad{ [super viewDidLoad]; //Do any additional setup after l

我是IOS开发的新手,我正在使用MailCore2API制作一个应用程序。 公司已经告诉我使用MCOIMApIdleOperation从Gmail服务器获取电子邮件。 我一直在谷歌上寻找解决方案,但这并不值得。 下面是有关问题的详细信息, 首先,我想通过MCOIMAPIdleOperation从收件箱文件夹加载电子邮件。下面是我获取电子邮件的代码

- (void)viewDidLoad{
[super viewDidLoad];
//Do any additional setup after loading the view from its nib.
//Made connection with Gmail Imap Server
NSUserDefaults *defaules = [NSUserDefaults standardUserDefaults];
NSString *emailid = [defaules objectForKey:@"emailid" ];
NSString *password = [defaules objectForKey:@"password" ];
session = [[MCOIMAPSession alloc] init];
session.hostname = @"imap.gmail.com";
session.port = 993;
session.username = emailid;
session.password = password;
session.connectionType = MCOConnectionTypeTLS;

idle=[session idleOperationWithFolder:@"INBOX" lastKnownUID:0];
[idle start:^(NSError *err){
     MCOIMAPMessagesRequestKind requestKind = (MCOIMAPMessagesRequestKind)
(MCOIMAPMessagesRequestKindHeaders | MCOIMAPMessagesRequestKindStructure |MCOIMAPMessagesRequestKindInternalDate | MCOIMAPMessagesRequestKindHeaderSubject |MCOIMAPMessagesRequestKindFlags);
MCOIMAPFolderInfoOperation *inboxFolderInfo = [session folderInfoOperation:Folder];
NSLog(@"statrt1");
[inboxFolderInfo start:^(NSError *error, MCOIMAPFolderInfo *info)
 {
     NSLog(@"start2");
     BOOL totalNumberOfMessagesDidChange =
     self.totalNumberOfInboxMessages != [info messageCount];
     self.totalNumberOfInboxMessages = [info messageCount];
     NSUInteger numberOfMessagesToLoad =MIN(self.totalNumberOfInboxMessages, nMessages);

     if (numberOfMessagesToLoad == 0)
     {
         self.isLoading = NO;
         return;
     }
     // If total number of messages did not change since last fetch,
     // assume nothing was deleted since our last fetch and just
     // fetch what we don't have
     MCORange fetchRange;

     if (!totalNumberOfMessagesDidChange && msgbody.count)
     {
         numberOfMessagesToLoad -= msgbody.count;

         fetchRange = MCORangeMake(self.totalNumberOfInboxMessages -msgbody.count -(numberOfMessagesToLoad - 1),(numberOfMessagesToLoad - 1));

     }
     // Else just fetch the last N messages
     else
     {
         fetchRange =MCORangeMake(self.totalNumberOfInboxMessages -(numberOfMessagesToLoad - 1),(numberOfMessagesToLoad - 1));


     }

     MCOIMAPFetchMessagesOperation *imapMessagesFetchOp =[session fetchMessagesByNumberOperationWithFolder:Folder requestKind:requestKind numbers:
                                                          [MCOIndexSet indexSetWithRange:fetchRange]];
    [imapMessagesFetchOp start:^(NSError *error, NSArray *messages, MCOIndexSet *vanishedMessages)
      {
          NSSortDescriptor *sort =[NSSortDescriptor sortDescriptorWithKey:@"header.date" ascending:NO];
          NSMutableArray *combinedMessages = [NSMutableArray arrayWithArray:messages];
          [combinedMessages removeAllObjects];
          [combinedMessages addObjectsFromArray:messages];
          msgbody=[combinedMessages sortedArrayUsingDescriptors:@[sort]];
          [uitable reloadData];
      }];

 }];

}];
}

通过上述代码,邮件被成功提取。问题是当新邮件到达时,上述代码不再运行。如何才能在新邮件到达时获取新邮件。。
请帮助我解决此问题。

您需要创建一个新的空闲操作,并在提取完电子邮件后启动它。感谢您的回复,我应该将哪个id传递给空闲方法,例如:-idle=[会话idleOperationWithFolder:@“收件箱”lastKnownUID:last id];您最近获取的邮件的UID。