【问题标题】:Where should I keep Core Data fetches and convenience methods?我应该在哪里保留核心数据获取和便利方法?
【发布时间】:2010-11-13 21:19:33
【问题描述】:

我有许多方便的方法可以为我的核心数据实体执行提取。例如,返回当前活动活动的方法,或两个已完成活动之间的时间间隔,或默认客户端(如果有)。我也有方便的方法来初始化和添加具有各种属性的实体。

我有一个数据模型单例类,它是初始化核心数据和获取 NSManagedObjectContext 等的首选类。

将这些便利方法放在数据模型单例类中,还是作为类方法放在每个相关实体子类中更好?我不认为这里有一条真道,但我想要意见和经验。谢谢!

【问题讨论】:

    标签: iphone objective-c cocoa core-data


    【解决方案1】:

    我会将它们与它们所操作的类相关联。为此,我将首先为您的实体生成类文件(在编辑器中选择实体,然后选择 File > New File > NSManagedObject)。

    那么,只要把方法放在类文件中,比如:

    + [活动活动活动];
    - [Activity intervalToActivity:(Activity *)other];
    + [活动activityWithVariousAttributes]; // (可能加上相应的 initWithVariousAttributes)

    我给出的一般规则是,如果该方法在特定类上运行,则将该方法放在该类中。 =)

    【讨论】:

      【解决方案2】:

      为了扩展 Dave 所说的内容,您可以将便捷方法添加到一个类别(例如 FooManagedObject+Convenience.h/.m),以便在您更改数据模型并重新生成 NSManagedObject 子类时(即 FooManagedObject.h/.m),您最终不会破坏您的便利方法。

      另一种选择是使用mogenerator,而不是类别,它维护一个私有(自动生成的)NSManagedObject 子类和自动生成的子类的公共子类,您可以将自己的方法添加到其中。这样,当您更改数据模型时,只会重新生成私有子类,但您的便捷方法所在的子类保持不变。与仅使用类别相比,设置工作量更大,但它增加了一些额外的便利方法,非常值得进行设置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-22
        相关资源
        最近更新 更多