Я новичок в разработке iOS и работаю над приложением языковой флэш-карты, где пользователю предоставляется флеш-карта, и пользователь может сказать, помнят ее или нет. Если они нажмут «да», значит, карта в будущем будет возвращаться в зависимости от разных переменных, если они нажмут «нет», значит, карта скоро вернется. (Разнесенная система повторения)Ввод логики в модель CoreData
Мой вопрос: Где было бы хорошее место для установки этой логики планирования, когда я использую CoreData в качестве хранилища для приложения?
два места, где я думал, являются:
В подклассе NSManagedObject для флэша.
Например, я мог бы сделать что-то вроде:
Flashcard : NSManagedObject {
...
@NSManaged var nextReview: NSDate?
func reschedule() {
// logic to assign a new date to nextReview
}
...
}
, а затем в контроллере, который имеет доступ к обоим CoreData (Model) Вид и я мог бы просто написать:
// 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 быть только данными с проверкой геттеров и сеттеров? Есть ли способ, который предпочтительнее в разработке iOS?
Я думаю, когда дело доходит до него, я хочу знать, должен ли подкласс NSManagedObject управлять своей собственной логикой.
В качестве дополнительного, но связанного с этим вопроса, этот тип решения, определяющий, каким образом организовать код, кажется, является слабым моментом для меня. Есть ли хорошие ресурсы, которые я могу прочитать, чтобы узнать больше об этих решениях и, что более важно, когда и почему было бы хорошо/плохо использовать их.
спасибо. Эта статья особенно отвечает на многие вопросы, которые у меня были! – oom
Ваш прием! Пожалуйста, примите ответ, если почувствуете, что это помогло. Ура! –
Новое в xCode 7 вам не нужно создавать категории (расширения в swift), так как xCode сделает это за вас, у вас будут только ваши свойства. И вы можете поместить свою логику в свой управляемый объект –