Objective c 在使用核心数据时提高UI性能
我一直在项目中使用核心数据,并且一直依赖其数据故障系统来返回缓存数据,但是我遇到了一些性能问题,特别是在UITableView中显示数据时,该视图根据获取的数据配置视图 它基本上通过一些NSManagedObject实例的唯一ID获取它们,并对存储在NSNumber中的值求和。它在for循环中对大约40个不同的对象执行此操作,并且每次重新加载UITableView时都执行此操作 是否有任何建议的方法来监听核心数据NSManagedObject中的更改,或者在我的级别上缓存数据,或者我是否应该依靠数据错误,而仅仅是我做错了什么Objective c 在使用核心数据时提高UI性能,objective-c,ios,cocoa-touch,design-patterns,core-data,Objective C,Ios,Cocoa Touch,Design Patterns,Core Data,我一直在项目中使用核心数据,并且一直依赖其数据故障系统来返回缓存数据,但是我遇到了一些性能问题,特别是在UITableView中显示数据时,该视图根据获取的数据配置视图 它基本上通过一些NSManagedObject实例的唯一ID获取它们,并对存储在NSNumber中的值求和。它在for循环中对大约40个不同的对象执行此操作,并且每次重新加载UITableView时都执行此操作 是否有任何建议的方法来监听核心数据NSManagedObject中的更改,或者在我的级别上缓存数据,或者我是否应该依靠
如果您能为我指出一个处理这种情况的好模式,我将非常感谢。您可以直接使用核心数据检索属性的总和。阅读标题为的部分 这应该是您需要的唯一提示:
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"Count"];
NSExpression *sumOfCountExpression = [NSExpression expressionForFunction:@"sum:"
arguments:[NSArray arrayWithObject:keyPathExpression]];
除非重新加载表的次数过多,否则此操作的速度不应太慢而导致问题。NSFetchedResultsController提供了一种很好的机制来处理错误,并提供了一个干净的UITableView界面。使用Instruments and Time Profiler可以很好地了解性能问题的具体位置。您需要做的第一件事是使用NSFetchedResultsController。它与UITableview配合使用,对于您在这里试图实现的目标非常有效。第二件事,为获取请求分配fetchBatchSize。您不需要将所有记录都保存在内存中 是否有对象唯一id的索引?获取40个索引对象不需要很长时间。你能把代码贴在你处理核心数据的地方吗?当然,我稍后会添加一些代码。