ios – 核心数据设计模式

ios – 核心数据设计模式,第1张

概述对于我的第一个 IOS应用程序,我计划合并CoreData但是我对我应该使用的正确设计模式有点不确定. 在我的app委托中,我有以下3个属性. @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;@property (readonly, strong, nonatomic) NS 对于我的第一个 IOS应用程序,我计划合并CoreData但是我对我应该使用的正确设计模式有点不确定.

在我的app委托中,我有以下3个属性.

@property (Readonly,strong,nonatomic) NSManagedobjectContext *managedobjectContext;@property (Readonly,nonatomic) NSManagedobjectModel *managedobjectModel;@property (Readonly,nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

我觉得使用这些对象的最佳方法是将它们注入需要从CoreData内部访问数据的所有相关视图控制器的构造函数中.

我能想到的最干净的方法是为我的数据模型中的每个表创建一种Repository类,它将容纳上述3个对象并提供访问表数据的辅助方法,例如: fetchAllTeams().然后可以将这些存储库类注入相关的视图控制器,而不是注入上面的所有3个对象.

这听起来像是在CoreData& Objective-C的?

还有什么是创建这些存储库类的最佳方法,我应该从appDelegate中删除默认的核心数据代码和属性(自动生成)并将它们放在抽象存储库类中.

如果存储库的每个实例都有自己的NSPersistentStoreCoordinator,NSManagedobjectModel和NSManagedobjectContext版本,或者应该在appDelegate传入的所有存储库实例之间共享这些对象的单个实例.

解决方法 首先,Core-Data为您设置的基本代码可能会使整个事情变得非常混乱.需要了解的是Core-Data是一种围绕各种数据库技术(sqlite,binary,xml)的包装器,通过这种方式,您可以免除直接触摸数据库的需要.您将在开始时担心的主要类是NSManagedobjectContext.您可以将其视为底层数据库的快照,您可以根据需要进行修改,并在完成后将NSManagedobjectContext写入数据库.你在那里的其他课程实际上只需要更细粒度,低级别的控制,因为这是你的第一个应用程序,最好不要管它们.你应该 read this,它很大,但你会从中获得很多的理解,尤其是一切如何连接和他们的角色.

总结一下:

>实际上你只需要传递NSManagedobjectContext
>你可以在每个VIEw Controller中创建一个实例变量,OR,
>你不应该为每个应用程序制作多个,除非你真的需要,然后你需要确保你将它们合并在一起
>你真的不需要创建所有对象的存储库,因为NSManagedobjectContext会为你做这个……有点……它会有条件地将对象加载到内存中,这里有很多但是开始的地方是学习什么一个错误(所有在NSManagedobjectContext或NSManagedobject下的Apples文档中)
>考虑你的对象代表什么和做什么.您可以将NSManagedobject子类化以表示您的Core-Data对象并将逻辑和验证放在其中 – 非常方便.
>查看NSFetchRequest和nspredicate等类,它们是从NSManagedobjectContext中获取对象的两个核心类.
>查看类似NSFetchedResultsController的类,它可以非常好地绑定到UI对象,如UItableVIEw.

最后,Core-Data是一个野兽,通常你会发现自己一直在重复常见的任务.您应该查看this excellent framework,它添加了各种帮助程序(如一个易于访问的NSManagedobjectContext实例,以及一个行对象提取,创建,删除).

总结

以上是内存溢出为你收集整理的ios – 核心数据设计模式全部内容,希望文章能够帮你解决ios – 核心数据设计模式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1041598.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存