![]() |
1
2
托管对象上下文是nsmanagedObject的必需属性,因此,如果不将其插入上下文,则无法正确初始化它的实例。它通过查看上下文来了解它的实体,并在其任何属性更改时通知上下文。 @dynamic和@synthesis只是编译器指令。你可以从@dynamic切换到@synthesis,只要你自己提供合适的getter和setter。由于nsmanagedObject很大程度上依赖于观察到的键值来工作,因此您必须编写符合kvo的访问器。
如果需要初始化nsmanagedObject子类,则重写
|
![]() |
2
3
我经常在我的一个应用程序中这样做。我的方法是用以下方法初始化对象:
在上下文中传递nil。要获取实体描述,您需要访问ManagedObjectContext。我倾向于在应用程序启动时获取实体描述,然后将其存储在应用程序委托中的实例变量中。 下面是一个例子:
这允许我使用nsmanagedObjects,而不将它们存储在数据库中。稍后,如果我决定要将对象插入数据库,我可以将其插入托管对象上下文:
|
![]() |
Mannopson · NSManagedObject验证和子类 7 年前 |