简体   繁体   English

为什么@NSManaged 属性可以存储在扩展中?

[英]Why can @NSManaged properties be stored in extensions?

How can the @NSManaged properties be in an extension when extensions can't contain stored properties?当扩展不能包含存储的属性时,@NSManaged 属性如何在扩展中? Why are they not the same as stored properties?为什么它们与存储属性不同?

A popular format for core data files is a core data class, and then an extension containing the core data properties.核心数据文件的流行格式是核心数据类,然后是包含核心数据属性的扩展。

//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
}

Technically @NSManaged properties are computed properties.从技术上讲, @NSManaged属性是计算属性。

Core Data synthesizes getter and setter. Core Data 综合了 getter 和 setter。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM