2011-11-04 44 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 –