我正在创建一个NSFetchRequest,但如下创建时,它无法初始化(在调试器中返回)。

let request: NSFetchRequest<NSFetchRequestResult> = EntityName.fetchRequest()

但是,按以下方式创建时它可以完美工作:
let request: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: "EntityName")

谁能告诉我为什么它会从底部开始而不是从顶部开始工作?顶部方式在使用它的其他三个类中均能完美运行。

最佳答案

我在测试目标上调用NSManagedObject.fetchRequest()时遇到了相同的问题,但是我可以通过在托管对象上下文的perform(_:)方法的一个块内调用它来修复它,如下所示:

context.perform {
    let request = EntityType.fetchRequest()
    (...)
}

10-06 10:31