刚刚安装了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
}
}
答案 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: