0
私のアプリケーションにNSDictionariesのNSArrayがあります。各辞書には、 "RunDate"と呼ばれるNSDateがあります。私が今問題を抱えているのは、それをやろうとしているコードが非常に非効率的だということです。基本的には、すべての辞書のうち、日付ごとに1つのセクションのみが必要です。その後、各セクション(その日付でソート)で、その日付の適切な辞書をロードします。NSDictionaryからNSDateでUITableViewセクションをロードしますか?
以下のコードでは、NSDictionaryの新しいNSArrayを作成しました。このNSArrayには、その日付の日付と番号が格納されています(各セクションにいくつの行があるかわかります)。問題は、このコードは非常に効率が悪く、非常に非効率的であると感じています。私のコードが間違っているか、改善できるかどうかは疑問でした。 500以上のエントリがあり、私が今使っているコードは非常に遅いでしょう。誰にもそれに関する提案はありますか?
runArray = [[NSMutableArray alloc] init];
runArray = [[[NSUserDefaults standardUserDefaults] arrayForKey:@"RunArray"] mutableCopy];
runDictTableArray = [[NSMutableArray alloc] init];
for (NSDictionary *dict in runArray) {
NSDictionary *runInfoDict = [[NSMutableDictionary alloc] init];
NSDate *theDate = [dict objectForKey:@"RunDate"];
//Check if we already have this date in the saved run array
BOOL goToNextDict = FALSE;
for (NSDictionary *savedDict in runDictTableArray) {
if ([theDate compare:[savedDict objectForKey:@"RunDate"]] == NSOrderedSame) {
goToNextDict = TRUE;
break;
}
}
if (goToNextDict)
continue;
////////////////////////////
//Now we check how many more we have of this date
int numbOfDate = 1;
int index = (int)[runArray indexOfObject:dict];
for (int i = index; i < [runArray count]; i++) {
NSDictionary *dictInner = [runArray objectAtIndex:i];
if ([theDate compare:[dictInner objectForKey:@"RunDate"]] == NSOrderedSame) {
numbOfDate++;
}
}
////////////////////////////
[runInfoDict setValue:[NSNumber numberWithInt:numbOfDate] forKey:@"DateAmount"];
[runInfoDict setValue:theDate forKey:@"Date"];
[runDictTableArray addObject:runInfoDict];
}
NSSortDescriptorを試しましたか?それはおそらくもっと簡単だろう... – Echizzle