Xcode 6 Beta 4:使用未解析的标识符&NSFetchedResultsChangeInsert'

时间:2014-07-27 16:53:19

标签: ios xcode swift

刚刚安装了Xcode 6 Beta 4,之前编译的代码现在在NSFetchedResultsChangeType的每个开关上都出现'Unresolved Identifier'。我检查了发行说明,当然还要通过这里搜索,看看是否有其他人经历过这个,但到目前为止还没有任何结果。任何信息表示赞赏!

谢谢!

func controller(controller: NSFetchedResultsController, didChangeSection sectionInfo: NSFetchedResultsSectionInfo, atIndex sectionIndex: Int, forChangeType type: NSFetchedResultsChangeType) {

    println("Running CoreDataTVC.controllerDidChangeSection")

    switch type {


    case NSFetchedResultsChangeInsert:

        self.tableView.insertSections(NSIndexSet(index: sectionIndex), withRowAnimation: .Fade)

    case NSFetchedResultsChangeDelete:

        self.tableView.deleteSections(NSIndexSet(index: sectionIndex), withRowAnimation: .Fade)

    default:

        return
    }
}

2 个答案:

答案 0 :(得分:7)

枚举时

typedef NS_ENUM(NSUInteger, NSFetchedResultsChangeType) {
    NSFetchedResultsChangeInsert = 1,
    NSFetchedResultsChangeDelete = 2,
    NSFetchedResultsChangeMove = 3,
    NSFetchedResultsChangeUpdate = 4
} ;

映射到Swift,公共前缀会自动从枚举中删除 值:

enum NSFetchedResultsChangeType : UInt {
    case Insert
    case Delete
    case Move
    case Update
}

比较"Interacting with C APIs" 在"使用Swift与Cocoa和Objective-C"文档。

所以你的代码应该是这样的

func controller(controller: NSFetchedResultsController, didChangeSection sectionInfo: NSFetchedResultsSectionInfo, atIndex sectionIndex: Int, forChangeType type: NSFetchedResultsChangeType) {
    switch type {
        case .Insert:
            self.tableView.insertSections(NSIndexSet(index: sectionIndex), withRowAnimation: .Fade)
        case .Delete:
            self.tableView.deleteSections(NSIndexSet(index: sectionIndex), withRowAnimation: .Fade)
        default:
            return
    }
}

提示:如果你创建一个" Master-Detail"在Xcode中应用"使用核心数据"选择 您将获得可以开始的示例代码。

答案 1 :(得分:1)

enum NSFetchedResultsChangeType在NSFetchedResultsController中定义。

enum NSFetchedResultsChangeType : UInt {
    case Insert
    case Delete
    case Move
    case Update
}

要访问枚举值,您可以使用枚举类型,然后使用如下情况:

switch type {  
case NSFetchedResultsChangeType.Insert:  
    self.tableView.insertSections(NSIndexSet(index: sectionIndex), withRowAnimation: .Fade) 
case NSFetchedResultsChangeType.Delete: 
    self.tableView.deleteSections(NSIndexSet(index: sectionIndex), withRowAnimation: .Fade)  
default:
    return
}

由于您知道类型类型为NSFetchedResultsChangeType,因此您也可以在切换案例中省略该类型,只需使用case .Insert:case .Delete: