KSExtensibleManagedObject
扩展了 NSManagedObject
以支持类似字典的存储非模型属性。这在您想在管理对象模型上进行微小扩展,但又不想或不能迁移现有持久存储的情况下尤其有用。
我是 Mike Abdullah,来自 Karelia Software。在 Twitter 上的网址是 @mikeabdullah。
关于代码的问题应在 https://github.com/karelia/KSExtensibleManagedObject 上作为问题留下,或在 Twitter 上发消息给我。
版权所有 © 2007 Karelia Software
任何人获得本软件及其相关文档文件("软件")的副本,免费获得在软件上不受限制的处理权,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或售卖软件副本的权利,并允许向软件提供副本的个人这么做,前提是满足以下条件
上述版权声明和本许可证声明应包括在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式,明示或暗示的保证,包括但不限于适销性、适用于特定目的和不受侵犯的保证。在任何情况下,作者或版权持有人在合同、侵权或其他行为中,不对任何索赔、损害或其他责任承担责任,这些索赔、损害或其他责任源于、产生于或与软件或软件的使用或其他交易有关。
在设计您的托管对象模型时,对于您认为将来可能需要扩展属性支持的任何实体,请添加一个额外的data
属性。默认情况下,KSExtensibleManagedObject
假定该属性名为extensiblePropertiesData
,因此您可能想要匹配该名称。但如果不是,则可以通过重写+extensiblePropertiesDataKey
来提供自己的名称。
请注意,到目前为止,您还没有需要KSExtensibleManagedObject
类本身。当/如果您确实需要其功能时
KSExtensibleManagedObject.h
和KSExtensibleManagedObject.m
添加到您的项目中。理想情况下,使此存储库成为子模块,但嘿,它是您的代码库,做您喜欢的事情。KSExtensibleManagedObject
成为您自定义托管对象类的主类-setExtensibleProperty:forKey:
或-removeExtensiblePropertyForKey:
来修改扩展属性存储。请注意,值必须采用NSCoding
才能存储-extensiblePropertyForKey:
和extensibleProperties
来检索值如果需要,您可以进一步扩展,通过在您的自定义子类中重写-usesExtensiblePropertiesForUndefinedKey:
来为未建模的密钥启用KVC和KVO(键值观察/编码)支持。
请参阅KSExtensibleManagedObject.h
以获取一些可能有用的其他高级功能。