Core data 在Swift 3中实现fetchedresultsviewcontroller

Core data 在Swift 3中实现fetchedresultsviewcontroller,core-data,swift3,delegates,nsfetchedresultscontroller,nspersistentstore,Core Data,Swift3,Delegates,Nsfetchedresultscontroller,Nspersistentstore,我试图在Swift 3中实现fetchedresultsviewcontroller,在将控制器的委托属性设置为self时遇到以下错误: 无法将“SomeRootViewController”类型的值分配给类型 “NSFetchedResultsControllerDelegate?” SomeRootViewController.swift @available(iOS 10.0, *) @objc class SomeRootViewController: UIViewController,

我试图在Swift 3中实现fetchedresultsviewcontroller,在将控制器的委托属性设置为self时遇到以下错误:

无法将“SomeRootViewController”类型的值分配给类型 “NSFetchedResultsControllerDelegate?”

SomeRootViewController.swift

@available(iOS 10.0, *)
@objc class SomeRootViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    var delegate: SomeRootViewControllerDelegate?
    public var context: NSManagedObjectContext!

    private let persistentContainer = NSPersistentContainer(name: "Accessory")


    fileprivate lazy var fetchedResultsController: NSFetchedResultsController<Accessory> = {
        // Create Fetch Request
        let fetchRequest: NSFetchRequest<Accessory> = Accessory.fetchRequest() as! NSFetchRequest<Accessory>

        // Configure Fetch Request
        fetchRequest.sortDescriptors = [NSSortDescriptor(key: "AccessoryAttributes.name", ascending: true)]

        // Create Fetched Results Controller
        let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.persistentContainer.viewContext, sectionNameKeyPath: nil, cacheName: nil)

        // Configure Fetched Results Controller
        fetchedResultsController.delegate = self //<<-- this is where error occurs

        return fetchedResultsController
    }()
@可用(iOS 10.0,*)
@objc类SomeRootViewController:UIViewController、UITableViewDataSource、UITableViewDelegate{
变量委托:SomeRootViewControllerDelegate?
公共变量上下文:NSManagedObjectContext!
private let persistentContainer=NSPersistentContainer(名称:“附件”)
fileprivate惰性变量fetchedResultsController:NSFetchedResultsController={
//创建提取请求
让fetchRequest:NSFetchRequest=附件。fetchRequest()作为!NSFetchRequest
//配置提取请求
fetchRequest.sortDescriptors=[NSSortDescriptor(键:“AccessoryAttributes.name”,升序:true)]
//创建获取的结果控制器
让fetchedResultsController=NSFetchedResultsController(fetchRequest:fetchRequest,managedObjectContext:self.persistentContainer.viewContext,sectionNameKeyPath:nil,cacheName:nil)
//配置获取的结果控制器

fetchedResultsController.delegate=self/因为要将委托设置为self,所以还需要使SomeRootViewController符合NSFetchedResultsController委托协议,如下所示:

class SomeRootViewController: NSFetchedResultsControllerDelegate, UIViewController, UITableViewDataSource, UITableViewDelegate {

由于要将委托设置为self,因此还需要使SomeRootViewController符合NSFetchedResultsControllerDelegate协议,如下所示:

class SomeRootViewController: NSFetchedResultsControllerDelegate, UIViewController, UITableViewDataSource, UITableViewDelegate {