我在不同的场合都遇到过这个关键词。我有点知道它应该做什么。但我真的想更好地理解它。
我注意到了什么@NSManaged
- 不是基于文档,而是通过重复使用:
- 它神奇地取代了键值编码。
- 大致相当于
@dynamic
在 Objective-C 中(我不太了解)
- 我需要它来子类化
PFObject
来自Parse SDK
。它通常使用 KVC 从后端读取值或向后端写入值。
- 给任何变量添加前缀
@NSManaged
当我不在初始化程序中初始化时,将关闭编译器。
正式定义(在 Core Data Apple Docs 中):
Core Data 提供 NSManagedObject 类的子类中属性的底层存储和实现。在托管对象子类中与核心数据模型中的属性或关系相对应的每个属性定义之前添加 @NSManaged 属性。与 Objective-C 中的 @dynamic 属性一样,@NSManaged 属性通知 Swift 编译器将在运行时提供属性的存储和实现。但是,与 @dynamic 不同的是,@NSManaged 属性仅适用于 Core Data 支持。
我从中得到了什么:
变量与@NSManaged
应免除编译时检查某物.
我已阅读正式文档和有关此事的各种其他问题:
@synthesize 与 @dynamic,有什么区别? https://stackoverflow.com/questions/1160498/synthesize-vs-dynamic-what-are-the-differences
@dynamic 使用的常见情况是什么? https://stackoverflow.com/questions/4524954/what-is-common-case-for-dynamic-usage/4524983#4524983
我本能地认出some我应该使用它的场景。我部分地知道它的作用。但我寻求的是对其作用的更纯粹的理解。
进一步观察:
A PFObject
in the Parse SDK
依靠Key Value Coding
来访问它的值。这PFObject
提供以下访问器:
objectForKey:
let score = results.objectForKey("descriptionOfResult")
//returns the descriptionOfResult value from the results object
setObject:forKey:
results.setObject("The results for a physics exam", forKey: "descriptionOfResult")
//sets the value of descriptionOfResult
据我了解,@NSManaged
神奇地理解我声明的变量自动使用上面的访问器get
and set
。我想知道它是如何做到这一点的(如果我理解的是真的),以及它还做了什么。