代码之家  ›  专栏  ›  技术社区  ›  SimonTheDiver

如何设置NSFetchedResultsController,在Swift中传入实体名称

  •  -1
  • SimonTheDiver  · 技术社区  · 7 年前

    在Swift中,当您声明如下所示的NSFetchedResultsController时,必须声明 NSFetchedResultsController 将返回,例如。 NSFetchedResultsController<Quote> :

    fileprivate lazy var fetchedResultsController: NSFetchedResultsController<Quote> = {
        // Create Fetch Request
        let fetchRequest: NSFetchRequest<Quote> = Quote.fetchRequest()
    
        // Configure Fetch Request
        fetchRequest.sortDescriptors = [NSSortDescriptor(key: "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
    
        return fetchedResultsController
    }()
    

    如果我想对两个不同的核心数据实体使用相同的tableview,并将实体的值注入 UITableViewController 作为 String Enum 我将如何重写代码以反映注入的值?

    1 回复  |  直到 7 年前
        1
  •  1
  •   matt    7 年前

    没有什么可以注射的。自始至终都会得到自动类型推断。

    当你说 Quote.fetchRequest() ,您将自动获得 NSFetchRequest<Quote> 作为其结果。然后在NSFetchedResultsController的初始值设定项中使用该提取请求,并自动获得 NSFetchedResultsController<Quote> . 一种实体类型、一种获取请求类型、一种结果控制器类型。

    如果你有 另一个 您刚才使用的实体类型 另一个 获取的结果控制器。