我宣布像这样的常规managedobject类

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

@NSManaged var fullName: String?
@NSManaged var phoneNumber: String?
@NSManaged var reservations: Reservation?

}

我真的很困惑在那种具体情况下@nonobjc属性的意图。

最佳答案

通常,您会使用@nonobjc注释来解决由此产生的循环依赖性问题。
例如,您在swift中定义了一些东西,它使用了objc中定义的东西,它再次使用了swift中的“某物”。
这不起作用,因为您需要将桥接头从objc导入swift,反之亦然。如果您不提供@nonobjc注释,编译器将无法解决此问题。
关于如何使用@objc和@nonobjc,请参阅苹果的文档:https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html

关于ios - 为什么我们将@nonobjc属性放在fetchRequest()声明之前?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47352379/

10-08 20:58