【问题标题】:Why can @NSManaged properties be stored in extensions?为什么@NSManaged 属性可以存储在扩展中?
【发布时间】:2020-01-10 20:18:45
【问题描述】:

当扩展不能包含存储属性时,@NSManaged 属性如何在扩展中?为什么它们与存储属性不同?

核心数据文件的一种流行格式是核心数据类,然后是包含核心数据属性的扩展。

//User+CoreDataClass
@objc(User)
public class User: NSManagedObject {
  var fullName: String {
    return "\(firstName) \(lastName)" 
  }
}

//User+CoreDataProperties
extension User {
  // Why can these @NSManaged properties live in an extension?
  @NSManaged public var id: Int64
  @NSManaged public var firstName: String
  @NSManaged public var lastName: String

  var storedProp: String // Error: Extensions must not contain stored properties
}

【问题讨论】:

  • 核心数据属性是计算的属性,而不是存储的属性。

标签: swift core-data nsmanagedobject


【解决方案1】:

从技术上讲,@NSManaged 属性是计算属性。

Core Data 综合了 getter 和 setter。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-15
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多