我是iOS開發新手,正在開發語言閃卡應用程序,向用戶呈現閃存卡,然後用戶可以說他們是否記住它。如果他們點擊「是」,那麼卡會按照各種變量在某個時間返回,如果他們點擊「否」,那麼卡預計會很快回來。 (間隔重複系統)將邏輯放入核心數據模型
我的問題是,當我使用CoreData作爲應用程序的存儲空間時,將放置此調度邏輯的好地方?
這兩個地方我都以爲是:
在NSManagedObject對燒錄卡的子類。
例如,我可以這樣做:
Flashcard : NSManagedObject {
...
@NSManaged var nextReview: NSDate?
func reschedule() {
// logic to assign a new date to nextReview
}
...
}
,然後在控制器,它可以訪問兩個CoreData(模型)和View我可以簡單地寫:
// When the user has tapped a response:
flashcard.reschedule()
我可以看到這種方法的一個好處是,如果必須在不同的控制器中分配新日期,我不必重寫調度邏輯。
或:
計算控制器的新日期,然後更新模型。
FlashcardViewController {
...
// When the user has tapped on a response:
let newReviewDate = scheduler.calculateNextReviewDate(...)
flashcard.nextReview = newReviewDate
}
應該重新安排邏輯是什麼,該控制器應負責的,或者是它的東西,該模型應該做的。或者應該CoreData NSManagedObject只是具有驗證getter和setter的數據?有沒有在iOS開發中首選的方法?我想知道是否NSManagedObject子類應該管理自己的邏輯。
作爲一個額外的,但相關的問題,這種類型的事情,決定組織代碼的方式似乎對我來說是一個弱點。有什麼好的資源可以閱讀,以便更多地瞭解這些類型的決策,更重要的是,何時以及爲什麼使用它們是好的/壞的。
謝謝。那篇文章特別回答了我的很多問題! – oom
歡迎您!如果您覺得有幫助,請接受答案。乾杯! –
xCode 7中的新功能您不需要創建類別(swift中的擴展名),因爲xCode會爲您執行這些類別,只會有您的屬性。你可以把你的邏輯放到你的管理對象中 –