在最后一个iMac上加载8425项需要5秒钟。
我不知道还有什么可以为您提供更多信息。我正在为NSComboBox的下拉列表加载项目。
我在Snow Leopard和Mountain Lion上测试过,它运行良好。在几台机器上试过,除小牛队外,它在所有osx上运行良好。相同的构建和数据库文件。
答案 0 :(得分:1)
我的猜测是NSComboBox逐个加载所有项目,而CoreData每次都要进行磁盘往返。您应该使用Instruments检查这种情况,以确定发生了什么。
在显示之前尝试预取所有项目。在此类提取过程中,您可以将-[NSFetchRequest returnsObjectsAsFaults:]
属性设置为NO
。
这是我项目中的一个预取片段:
if ( ! didPrefetch)
{
didPrefetch = YES;
// Your fetch request that will load all items
NSFetchRequest* fetchRequest = ... ;
// If you need to prefetch some relationships
fetchRequest.relationshipKeyPathsForPrefetching = @[...];
// This forces objects to fault info row cache
fetchRequest.returnsObjectsAsFaults = NO;
[managedObjectContext executeFetchRequest:fetchRequest error:&error];
}