0

我想在斯威夫特3实施fetchedresultsviewcontroller和控制器的委托属性设置为自当我遇到了以下错误:在斯威夫特实施fetchedresultsviewcontroller 3

无法指定类型的值“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 
    }() 

有人可以解释这个问题给我,我怎么能解决这个问题?

回答

2

因为要设置委托给自己,你还需要做出SomeRootViewController符合NSFetchedResultsControllerDelegate协议,像这样:

class SomeRootViewController: NSFetchedResultsControllerDelegate, UIViewController, UITableViewDataSource, UITableViewDelegate { 
+0

谢谢!非常正确! – Vee