• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 我在哪里使用 Core Data 将业务逻辑放在 IOS 应用程序中?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 16:49:26 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我刚刚开始探索 ios 和 xcode,并开始构建使用 Core Data 的应用程序。

在我的模型中,我有 2 个相关实体:

  • 具有examDate 和studyStartDate 的考试实体
  • 用于计划/记录考试准备的 CalendarItem。

Section of my data model

业务逻辑的一部分是:对于 studyStartDate 和examDate 之间的所有日期,我想要一个CalendarItem。

因此,为此,我需要在每次日期范围的开始和结束(在 studyStartDate 和examDate 中)更改时创建/删除 CalendarItems 的代码。

在其他帖子(例如 here)中,我读到这种类型的业务逻辑应该放在模型中(而不是在 Controller 中)。所以现在我需要在我的模型中找到一个可以编写代码的地方。

我的问题是:我在哪里创建此代码? 在考试项目的 NSManagedObject 的子类中?如何访问examItem 中的ManagedObjectContext(如果在我的模型中插入/删除其他记录,我认为我需要它)? 还是我需要继承 NSManagedObjectContext 并在那里构建我的逻辑?

我真的迷路了。

更新:
感谢下面的答案,我或多或少地跟进了数据库管理器模型。尝试保持 ManagedObjects 简单并专注于单个实体是正确的方向。

我创建了一个类 CalendarManager,我在 appdelegate 中实例化了一次。它接收 ManagedObjectContext。它订阅通知中心中的插入/删除通知,并为每个新考试设置键值观察器。

顺便说一句:KVO 只需要关注考试中的日期项目。不幸的是,无法使用 NSManagedObjectContextObjectsDidChangeNotification。这会陷入无休止的循环:添加/删除相关的 CalendarItem 也会改变 Exam,这会触发另一个循环。

CalendarManager.h

#import <CoreData/CoreData.h>

@interface CalendarManager : NSObject

-(id)initWithNSManagedObjectContext *)moc;

@end

CalendarManager.m

#import "CalendarManager.h"
#import "Exam.h" // NSManagedObject subclass
#import "CalendarItem.h" // NSManagedObject subclass

@interface CalendarManager ()

-(void)updateCalendarItemsForExam*)exam;
-(void)setObserverForExam*)exam;
-(void)removeObserverForExam*)exam;

@property NSArray *keyPaths;
@property NSManagedObjectContext *moc;

@end

这样对我有用。



Best Answer-推荐答案


我总是创建一个具有 NSManagedObjectContext 并插入/删除的 DatabaseManager。我的妈妈们只是愚蠢的类(class),没有任何逻辑

但我想说这是一个见仁见智的问题

关于ios - 我在哪里使用 Core Data 将业务逻辑放在 IOS 应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33297756/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap