我有一個包含約500個對象的Core Data數據庫。這些對象是將被用戶查看和修改的'卡片'。當用戶修改卡時,名爲「groupNumber」的屬性將會改變。將數據對象加載到NSArray會導致啓動速度緩慢
這些卡在每個組中的順序是非常重要的,由用戶決定。我將數據庫對象加載到一個數組中。當用戶進行更改時,我使用'title'屬性將數組的順序保存到plist中。
我的問題來了,當應用程序重新啓動。我需要按保存的順序加載組數組。但是,當我使用plist來執行獲取請求時,它非常緩慢。
慢的代碼是:
// get array from plist sorted by 'title'
NSMutableArray *group1Temp = [plistData objectForKey:@"group1ArrayData"];
for (int i = 0; i < [group1Temp count]; i++) {
// set predicate to 'title' attribute
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"title == %@", [group1Temp objectAtIndex:i]];
// load filtered database object into temp array
NSArray *temp = [self.vocabDeckArray filteredArrayUsingPredicate:predicate];
[self.group1Array addObjectsFromArray:temp];
}
當這個執行500次,這實在是太慢了。如果我可以將數據庫對象的NSArray保存到plist中,那麼我不需要執行謂詞搜索,但似乎我無法做到這一點。
我在想我的整個方法都是錯誤的。如何以更快的方式保存/加載數據庫對象數組的順序?將數據庫對象加載到數組本身不好的做法?
感謝您的幫助!
我完全按照你所說的做,只是存儲一個對象標題數組而不是字典。您爲我節省了大量工作,現在應用程序在3秒內加載完畢。非常感謝。 – shohaku 2011-01-06 04:27:03