1

我可以使用 获取所有消息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.
        }
    }
}

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

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

4

2 回答 2

6

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

MCOIMAPMessagesRequestKind requestKind = MCOIMAPMessagesRequestKindHeaders|MCOIMAPMessagesRequestKindFlags;

然后,查找未读标志:

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.
    }
}
于 2013-09-28T21:01:54.880 回答
0

您可以使用 0 或更好的值,如下所示,这也是 0,但谁知道他们是否决定稍后将其更改为其他值:

if(message_.flags == MCOMessageFlagNone)
于 2015-04-08T18:37:10.203 回答