具有未在模型中定义的附加属性的 NSManagedObject 子类

Posted

技术标签:

【中文标题】具有未在模型中定义的附加属性的 NSManagedObject 子类【英文标题】:NSManagedObject subclass with additional properties not defined in model 【发布时间】:2011-05-06 00:25:55 【问题描述】:

是否可以为核心数据模型中未定义的 NSManagedObject 子类定义其他属性?我有一系列不想包含在模型中的附加属性。

我可以将 NSManagedObject 保存到上下文中就好了,但是当我关闭应用程序然后在再次启动应用程序后运行 fetch 时,NSManagedObject 包含所有空值...

有什么想法吗?

【问题讨论】:

【参考方案1】:

如果您想保存这些值,您必须将它们放入您的模型中,否则您可以在每次访问值时创建它们并且之前没有创建它们。

延迟加载样式。

- (NSString *)name 
    if (!name) 
        name = ...
    
    return name;

【讨论】:

这些是我不想保存的属性。我没有定义吸气剂,因为我将它们定义为属性。如果可以创建这些附加属性,那么知道为什么 fetch 会为所有属性(包括模型中定义的属性)返回 null 值吗?从 fetch 返回的对象数量是正确的... 这样的属性绝对不是原因。很可能您已将属性设置为 nil。仔细检查这一点,在您设置值的代码周围添加一些 ifs 或 NSAsserts。不要忘记保存上下文。并在可用时检查所有返回值。特别是对于保存。可能是您插入对象,保存空对象,设置一些值并且下一次保存失败。 我刚刚使用通用 NSManagedObject 而不是我定义的 NSManaged 对象子类进行了 fetch 测试,所有值似乎都很好......你确定我的类定义与此无关吗? 您有没有将核心数据属性的 @dynamic 访问器替换为 @synthesize

以上是关于具有未在模型中定义的附加属性的 NSManagedObject 子类的主要内容,如果未能解决你的问题,请参考以下文章

分配给@NSManaged public var locks UI

存储的属性需要一个初始值或者应该是@NSManaged

有没有办法在另一个具有附加属性的模型中使用 DbSet?

自定义验证属性未在模型上验证 - WebAPI C# 和 JSON

属性不能被标记为@NSManaged,因为它的类型不能在 Objective-C 中表示

具有依赖属性绑定到 DockPanel.Dock 附加属性的 WPF 自定义控件不起作用