swift - 如何将类型应用于 NSFetchRequest 实例?

标签 swift core-data swift3

在 Swift 2 中,以下代码有效:

let request = NSFetchRequest(entityName: String)

但在 Swift 3 中它给出了错误:

Generic parameter "ResultType" could not be inferred

因为 NSFetchRequest 现在是一个通用类型。他们在他们的文件中写道:

let request: NSFetchRequest<Animal> = Animal.fetchRequest

所以如果我的结果类是 Level 我应该如何正确请求?

因为这不起作用:

let request: NSFetchRequest<Level> = Level.fetchRequest

最佳答案

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

let request: NSFetchRequest<Level> = Level.fetchRequest()

取决于你想要的版本。

您必须指定泛型类型,否则方法调用是不明确的。

第一个版本是为 NSManagedObject 定义的,第二个版本是为每个使用扩展的对象自动生成的,例如:

extension Level {
    @nonobjc class func fetchRequest() -> NSFetchRequest<Level> {
        return NSFetchRequest<Level>(entityName: "Level");
    }

    @NSManaged var timeStamp: NSDate?
}

重点是删除字符串常量的使用。

关于swift - 如何将类型应用于 NSFetchRequest 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37889121/

相关文章:

ios - 如何使用异步调用对 @IBAction 进行单元测试

ios - 我无法在 UICollectionView 中显示图像

iphone - 核心数据获取到许多

ios - Swift 4 - 无法仅在物理设备上将类型 'NSDate' 的值分配给类型 'Date?'

swift - UICollectionView 将第一个单元格设置为始终为特定内容

ios - 如何让用户在保存时自定义文件名?

ios - iOS核心数据在后台获取导致崩溃

ios - Weirdcore 数据 react - 未检测 NSManagedObject 子类

ios - Swift 同时将对象转换为类型和协议(protocol)

ios - 需要为使用 Swift 的目标正确配置 “Swift Language Version” (SWIFT_VERSION)