我有很多方便的方法來爲我的Core Data實體執行提取操作。例如,返回當前活動活動的方法,或兩個完成的活動之間的時間間隔,或者是一個默認客戶端(如果有)。我也有方便的方法來初始化和添加具有各種屬性的實體。我應該在哪裏保存核心數據提取和便捷方法?
我有一個數據模型,單例類是去到類初始化核心數據和獲取的NSManagedObjectContext等
是更好地把這些方便的方法在數據模型中單件類,或每個相關實體的子類都是類方法?我不認爲這裏有一個真正的道路,但我希望看到意見和經驗。謝謝!
我有很多方便的方法來爲我的Core Data實體執行提取操作。例如,返回當前活動活動的方法,或兩個完成的活動之間的時間間隔,或者是一個默認客戶端(如果有)。我也有方便的方法來初始化和添加具有各種屬性的實體。我應該在哪裏保存核心數據提取和便捷方法?
我有一個數據模型,單例類是去到類初始化核心數據和獲取的NSManagedObjectContext等
是更好地把這些方便的方法在數據模型中單件類,或每個相關實體的子類都是類方法?我不認爲這裏有一個真正的道路,但我希望看到意見和經驗。謝謝!
我會將它們與它們所在的類聯繫起來。爲此,我將首先爲您的實體生成類文件(選擇編輯器中的實體,然後選擇File> New File> NSManagedObject)。
然後,只是把在類文件的方法,如:
+ [Activity activeActivities]; - [Activity intervalToActivity:(Activity *)other]; + [Activity activityWithVariousAttributes]; // (plus maybe a corresponding initWithVariousAttributes)
的一般規則我給的是,如果該方法在一個特定的類工作,然後把方法在該類。 =)
要展開什麼戴夫說,你可以在你方便的方法添加到某個類別(例如FooManagedObject + Convenience.h/.M),所以,當你改變你的數據模型,並重新生成NSManagedObject子類(即FooManagedObject.h/.m),你不會最終破壞你的便利方法。
另一種選擇是使用mogenerator而不是類別,維護一個私有的(自動生成的)NSManagedObject子類和自動生成的子類的公共子類,您可以將自己的方法添加到該子類中。通過這種方式,當您更改數據模型時,只會重新生成私有子類,但您的便捷方法所在的子類不會受到影響。與簡單地使用類別相比,設置更多的工作,但它增加了一些額外的便利方法,非常值得設置。