反驳论证是在iOS中存在NSFetchedRequestController.据推测,如果Apple认为关系和获取的属性在现有的错误/缓存中提供了令人满意的性能,那么他们就不会创建NSFetchedRequestController.
有些情况下使用NSFetchRequest是优越的,因为Core Data可以在sqlite中完成所有工作.一个例子是获取聚合值.
有什么想法吗?我已经看了Core Data Programming Guide.在“获取托管对象”和“核心数据性能”部分中有相关的建议,但没有强烈建议关于提取请求的关系,反之亦然.
解决方法 我会说关系和NSFetchRequest各有其优点和缺点.作为开发人员,您应该知道何时适合使用其中一个.例如,采用这个模型:-------------- 1 * ------------| Department |<------------->>| Employee |-------------- ------------| name | | name |-------------- | age | | salary | ------------
如果要检索属于特定部门的所有员工,则应遵循“department.employees”关系.使用谓词’department == xxxx’为Employee实体创建NSFetchRequest是不合适的.
相反,如果您想查找具有薪水>的特定部门的员工. x然后使用带有谓词的NSFetchRequest是合适的,例如’department == xxxxx AND salary> X’.使用department.employees关系检索所有员工是不合适的,然后在循环中迭代它们以找到高收入者.
总之,关系或NSFetchRequests本质上不是“好”或“坏”.只需适当使用它们.使用关系导航对象图.使用NSFetchRequest执行子集搜索,或者您需要灵活地将结果作为字典返回或需要使用NSExpressions.
编辑添加:
你的代码遍布很多NSFetchRequests,这是设计糟糕的表现.我总是将数据请求封装在自定义NSManagedobject类中,并尝试不在视图/视图控制器代码中进行任何Core Data调用.
我想,提取属性是实现同样目标的一种方式.我更喜欢在代码中创建NSFetchRequest而不是使用Core Data编辑器来完成它.它更加灵活,但两种方式实际上都是相同的.
总结以上是内存溢出为你收集整理的cocoa – CoreData模型设计:过度使用NSFetchRequest是设计不佳模型的症状吗?全部内容,希望文章能够帮你解决cocoa – CoreData模型设计:过度使用NSFetchRequest是设计不佳模型的症状吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)