swift – 如何将类型应用到NSFetchRequest实例?

前端之家收集整理的这篇文章主要介绍了swift – 如何将类型应用到NSFetchRequest实例?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在Swift 2中,以下代码正在工作:
  1. let request = NSFetchRequest(entityName: String)

但在Swift 3它给出错误

Generic parameter “ResultType” could not be inferred

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

  1. let request: NSFetchRequest<Animal> = Animal.fetchRequest

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

因为这不工作:

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

要么

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

取决于你想要的版本。

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

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

  1. extension Level {
  2. @nonobjc class func fetchRequest() -> NSFetchRequest<Level> {
  3. return NSFetchRequest<Level>(entityName: "Level");
  4. }
  5.  
  6. @NSManaged var timeStamp: NSDate?
  7. }

整个关键是要去掉String常量的用法

猜你在找的Swift相关文章