枚举值&NSFetchedResultsChangeMove'和NSFetchedResultsChangeUpdate'没有在交换机中处理

时间:2014-09-09 20:06:27

标签: ios xcode uitableview

我收到此警告: 枚举值&NSFetchedResultsChangeMove'和NSFetchedResultsChangeUpdate'没有在开关中处理

有什么想法吗?

- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type {
    switch(type) {
        case NSFetchedResultsChangeInsert:
            [self.tableView insertSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade];
            break;

        case NSFetchedResultsChangeDelete:
            [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade];
            break;
    }
}

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
    [self.tableView endUpdates];
}

提前致谢

2 个答案:

答案 0 :(得分:16)

您也可以添加

        default:
        break;

摆脱那些警告。

答案 1 :(得分:11)

编译器知道NSFetchedResultsChangeType有四个可能的值,但是您的代码只处理其中的两个。如果您确定不会发生其他两个,则可以忽略该警告。但是最安全的做法是包含一些代码来处理这些其他值,无论是什么都没有,或者是NSLog来查看它们是否确实发生。我会添加

case NSFetchedResultsChangeMove:
    NSLog(@"A table item was moved");
    break;
case NSFetchedResultsChangeUpdate:
    NSLog(@"A table item was updated");
    break;

进入你的switch语句。编辑:检查了文档,我发现这两个值不用于Section更改,因此您可以忽略警告或在上面的行中添加null case语句来抑制警告。