2013-09-28 2 views
1

Я могу получить все сообщения, используя fetchMessagesByUIDOperationWithFolder:, однако message.flags все возвращают 0, когда некоторые сообщения непрочитаны, большинство из них читаются, а некоторые из них отмечены.MailCore2, получать только сообщения UNREAD или знать, какие из них UNREAD

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), но все же, все флаги возвращения .

Каков правильный способ узнать, есть ли сообщение UNREAD?

ответ

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. 
    } 
} 
0

Вы можете использовать 0 или лучше, как показано ниже, которое 0 тоже, но кто знает, если они решат изменить его на что-то еще позже:

if(message_.flags == MCOMessageFlagNone)