MailCore2,只获取UNREAD消息,或知道哪些消息是UNREAD

Wri*_*sCS 1 objective-c ios mailcore2

我能够使用获取所有消息fetchMessagesByUIDOperationWithFolder:,但是,当一些消息未读时,message.flags都返回0,大多数消息被读取而一些消息被加星标.

MCOIMAPMessagesRequestKind requestKind = MCOIMAPMessagesRequestKindHeaders;
NSString *folder = @"INBOX";
MCOIndexSet *uids = [MCOIndexSet indexSetWithRange:MCORangeMake(1, UINT64_MAX)];

MCOIMAPFetchMessagesOperation *fetchOperation = [session fetchMessagesByUIDOperationWithFolder:folder requestKind:requestKind uids:uids];
[fetchOperation start:^(NSError * error, NSArray * fetchedMessages, MCOIndexSet * vanishedMessages)
{
    if ( ! error )  {
        for ( MCOIMAPMessage * message_ in fetchedMessages )  {
           // I only want UNREAD messages.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试过使用if ( message_.flags & MCOMessageFlagSeen )但仍然会将所有标志返回为0.

查看消息是否为UNREAD的正确方法是什么?

Wri*_*sCS 6

对于任何有相同问题的人,您还需要包含对标志的类型请求:MCOIMAPMessagesRequestKindFlags.

MCOIMAPMessagesRequestKind requestKind = MCOIMAPMessagesRequestKindHeaders|MCOIMAPMessagesRequestKindFlags;
Run Code Online (Sandbox Code Playgroud)

然后,查找未读标志:

for ( MCOIMAPMessage * message_ in fetchedMessages )  {
    if ( message_.flags == 0 ) {
        // I have a suspicion that this is not the correct
        // way to do this, but it seems to work the way I need.
    }
}
Run Code Online (Sandbox Code Playgroud)