我已经研究这个问题有一段时间了,我愿意接受任何最佳实践/建议。
示例
所以我创建了一个示例Core数据应用程序。该应用程序基本上是对AddressBook应用程序的模仿。我有以下实体:团体,联系,地址,电话,电子邮件,网页,日期。
正如您可能猜测的那样,一个组可以有多个联系人,一个联系人可以在多个组中。联系人还可以有多个地址、电话、电子邮件、网页和日期。
我基本上从AddressBook导入了大约600个联系人到这个应用程序中。用户界面相对简单.左边是组/类别列表,右边是NSCollectionView或NSTableView,根据所选组显示联系人列表。(集合视图或表view...as增加了显示这两个视图的能力,这两个视图都绑定到NSArrayController)。
我使用的组元素是代码,而不是Interface,因为我想使用类似事物的侧边栏,这样做要容易得多。
问题
其中一个类别包含所有联系人,而另一个类别仅包含2个联系人。当我选择具有所有联系人的类别时,需要8-10秒的时间来填充集合或表视图。然而,在AddressBook本身中做同样的事情是非常迅速的,几乎是即时的。我正在使用SQLLite存储类型,并且尝试过使用许多不同的方法,包括尝试通过仪器诊断问题,但是没有什么效果。
我尝试过将谓词设置为联系人数组控制器的defaultFetchPredicate,而不是设置过滤器谓词,但这是行不通的。
我尝试过preFetching和错误,但我不确定我是否做得对,也不确定如果Interface处理联系人的NSArrayController,如何完成它。
另一个示例
我还试着下载一个样例核心数据app...while它有一个比我做的更简单的关系模型(基本上是一个分子有原子对象和一个原子对象有元素对象),我插入了65000条记录,它表现得很有魅力。
问题
我基本上是碰壁了,我想知道是否还有其他人知道为什么会发生这种情况,以及解决/克服/避免这类问题的最佳方法?
谢谢!
发布于 2010-06-11 08:05:25
事实证明,实际上是NSCollectionView放慢了速度。我认为创建和操作视图x集合视图的数量会增加大量开销。IKImageBrowserView本可以被使用,但它不是我要找的。
最后,我更改了应用程序布局以解决这个问题。
谢谢大家!
https://stackoverflow.com/questions/2991157
复制相似问题