核心数据重构
Posted
技术标签:
【中文标题】核心数据重构【英文标题】:Core data refactoring 【发布时间】:2011-01-25 07:11:15 【问题描述】:嗨 通常所有的方法都像
'- (NSFetchedResultsController *)fetchedResultsController '
被放置在视图控制器的代码中。我发现将数据获取代码与生命周期方法或表委托方法一起编写有点混乱。 所以我的观点是我应该将 CoreData 方法重构为其他一些帮助类,比如 DataLoader,然后在视图控制器中调用它们吗? 这是错误的做法,还是我会失去 Core Data 方法的一些编码优势。
【问题讨论】:
【参考方案1】:我会说将 fetchedResultsController 移动到辅助类是一个好主意。 我经常遇到的一个问题是要正确拼写属性。
例如,我做了一个谓词并想要过滤一个名为@"isSelected"
的属性。编译器和链接器都没有检查字符串isSelected
。我将不得不仔细检查使用字符串的每一行。
搜索和替换对拼写错误不起作用,因为我不知道引入了哪些错误。
当我弄错谓词时,将不会获取任何结果。问题是我不知道是否没有匹配的行或者我是否过滤错误。我需要在运行时检查,这会耗费时间。
对于谓词,保存的模板存在,所以谓词不是一个完美的例子。但是想想value forKey:
,我们就在第一方。
现在如果所有 fetchedResultsController 都在一个文件中,那么检查会变得更容易。至少它减少了在遥远且很少使用的课程中错过那个小拼写错误的可能性。
...或者我会放弃 Core Data 方法的一些编码优势。
我倾向于拒绝,但其他人请随意加入。
【讨论】:
嘿,谢谢奥拉夫,我的观点也有些相同,这是我需要获取结果时查看的常见地方..【参考方案2】:@Mann 是的,当然你可以在不失去任何编码优势的情况下做到这一点.....如果你不想在视图控制器中编写数据获取代码,请不要在那里写.....创建任何其他类让我们说DataLoader
并在这个类的方法中编写获取代码......并通过使DataLoader
类的对象调用这个方法......你将能够从数据库中获取数据
希望你得到它!
【讨论】:
以上是关于核心数据重构的主要内容,如果未能解决你的问题,请参考以下文章