2011-11-04 45 views
0

我目前有一个'学校'实体和'名称'实体的数据库。 [学校< ----(一对多)-------- >>名称]。我在一个表中显示数据库,并希望用户能够通过键入进行搜索。每当搜索栏文本发生更改时,表格都会更新,因此我需要这样做才能高效。SQL谓词vs可变数组

现在我获取数据库中所有学校实体的Mutable数组,然后根据输入的文本过滤数组。使用NSPredicate只能获取相关学校会更有效率吗?

回答

1
NSPredicate *predicate = [NSPredicate predicateWithFormat: 
           @"schoolTitle CONTAINS[cd] %@", searchTitle]; 

schoolTitle是实体的属性。

0

不可以。除了可能更频繁地调用磁盘,也就是每次运行谓词时,它都会做同样的事情。

话虽如此,您的情况可能会有特殊情况使我的说法错误。尝试双向实施并收集一些性能统计信息。

1

高效是一个加载的单词;您目前的方法可能是性能最佳的,但使用更多的RAM。就像jeremy所说的,访问闪存数据存储时,谓词会比较慢。如果您可以断言内存使用情况合理(衡量),您当前的方法可能会是更好的用户体验。请记住您的应用程序可能运行的设备的最低公分母(例如iPhone 3g)。

+0

好吧,如果我说有1000个实体,每个都可能有2或3个名字,那么这个大小的数组可能会占用多少内存? – tdeegan

+0

分析内存使用情况的最简单方法是使用Instruments,它随Developer Developer和xcode一起提供。点击“运行”按钮并选择“Profile”,然后从内存部分选择Allocations。苹果的仪器指南在这里: http://developer.apple.com/library/IOS/#documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/Introduction/Introduction.html –