MailCore2,只获取未读消息,或者知道哪些是未读消息
Posted
技术标签:
【中文标题】MailCore2,只获取未读消息,或者知道哪些是未读消息【英文标题】:MailCore2, fetch only UNREAD messages, or know which ones are UNREAD 【发布时间】:2013-10-04 22:44:21 【问题描述】:我可以使用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。
查看消息是否未读的正确方法是什么?
【问题讨论】:
【参考方案1】:对于遇到相同问题的任何人,您还需要包括对标志的友好请求: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.
【讨论】:
【参考方案2】:您可以使用 0 或更好的值,如下所示,这也是 0,但谁知道他们是否决定稍后将其更改为其他值:
if(message_.flags == MCOMessageFlagNone)
【讨论】:
以上是关于MailCore2,只获取未读消息,或者知道哪些是未读消息的主要内容,如果未能解决你的问题,请参考以下文章