swift - 为什么我不能使用闭包创建 Fetched Results Controller?

标签 swift cocoa nsfetchedresultscontroller

我正在尝试按照一些教程创建一个 Fetched Results Controller。但是,在 Swift 3 中,当我尝试在下面看到的模式中创建一个时,出现“无法推断复杂闭包类型”的错误。

class FriendsController: UICollectionViewController {

lazy var fetchedResultsController: NSFetchedResultsController = {
    let context = (UIApplication.shared.delegate as! 
AppDelegate).persistentContainer.viewContext

    let fetchRequest: NSFetchRequest = Friend.fetchRequest()

    let fetchedResultsController = 
NSFetchedResultsController(fetchRequest: fetchRequest, 
managedObjectContext: context, sectionNameKeyPath: nil, cacheName: 
nil)
    return fetchedResultsController
}()

我在制作 View 、按钮等其他东西时使用了这种闭包模式,但是它不起作用(即使我不使用惰性变量)。这个错误对我来说也不是很清楚(如上所述)。谢谢。

最佳答案

NSFetchedResultsController 在 Swift 3 中是通用的。您必须指定具体类型,因为编译器无法推断复杂的闭包类型:

lazy var fetchedResultsController: NSFetchedResultsController<Friend> = { ...

关于swift - 为什么我不能使用闭包创建 Fetched Results Controller?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44181919/

相关文章:

core-data - 带有从核心数据中获取的部分的 SwiftUI 列表

ios - Popup VC 显示在单元格上而不是 tableView 上

objective-c - 如何为 NSArrayController 子类实现 init 方法

objective-c - 应用程序随机停止接收按键(CGEventTaps)

ios - 是否可以在 Xcode 中重构 Objective-C++ 代码

ios - NSFetchedResultsController fetchAllGroupedBy 没有已知方法

ios - 使用 Swift 3 实现缩短(单个数据多次)和过滤核心数据的最佳方法是什么?

swift - 在 SKAction 动画之后无法禁用然后重新启用触摸

swift - 我无法理解 SpriteKit 的旋转系统

ios - 观察 UINavigationController navigationBar 显示/隐藏