Добре, като начало, бих опростил това малко, като заменя масива от играчи с нова променлива NSString, която просто казва за кой отбор са тези данни (така че ще имате променлива NSString *squadName
(и бихте задали posession1.squadName = @"Squad A"
или нещо подобно ) като свойство на вашия Possession
обект, вместо масива от играчи. Ако искате да отпечатате имена или номера на играчи, винаги можете да настроите масив или речник някъде другаде, който съдържа тази информация за отпечатване на екрана - нещо като
NSArray squad1Array = [NSArray arrayWithObjects:@"Bill",@"Tom",@"Joe",nil];
NSArray squad2Array = [NSArray arrayWithObjects:@"Jim",@"Jeff",@"Mike",nil];
След като настроите отрядите, ще трябва да преминете през масива от Possession
обекта. В този цикъл първо проверете didEndInTurnover
. След това имате нужда от целочислени променливи за всеки отряд и всеки didEndIn...
(така че нещо като int squadAScore
, int squadBScore
, int squadATurnover
, int squadBTurnover
и така нататък). Когато преминавате през цикъл, проверете кой отбор е бил активен за това притежание и увеличете брояча на целите числа за този отбор, както е подходящо. И накрая, просто сравнете вашите броячи на цели числа, след като прегледате всички притежания, за да видите кое е най-голямото.
Обърнете внимание, че ако искате да организирате това малко по-добре или да го направите по-гъвкаво и по-малко кодирано, вероятно бихте могли да разгледате използването на вложени NSDictionaries вместо целочислените броячи - ще отнеме малко повече работа, за да настроите като речници, но ако трябва да добавите нов отбор по-късно или нещо подобно, може да е по-лесно да правите подобни промени в бъдеще.
Е, не знам дали нещо от това е разбираемо или не. Ако наистина няма смисъл, мога да се опитам да сложа някакъв код за това как приблизително ще изглежда цикълът, просто ме уведомете.
РЕДАКТИРАНЕ: Ето някои примери за това как ще изглежда цикълът, използвайки речниците:
// Define counters for squads
NSMutableDictionary *turnoverDictionary = [[NSMutableDictionary alloc] init];
NSMutableDictionary *scoreDictionary = [[NSMutableDictionary alloc] init];
// Loop over all possessions
for (YourPossessionClass *currentPossession in myTeamStats.possessionArry)
{
if (currentPossession.didEndInTurnover == YES)
{
BOOL found = NO;
for (NSString *squad in [turnoverDictionary allKeys])
{
if ([squad isEqualToString:currentPossession.squad])
{
int count = [[turnoverDictionary objectForKey:squad] intValue];
count ++;
NSNumber *newCount = [NSNumber numberWithInteger:count];
[turnoverDictionary setObject:newCount ForKey:squad];
found = YES;
}
//else {Do Nothing - this isn't the squad we want}
}
// Add a new entry to the dictionary for this squad if this squad didn't exist before
if (!found)
{
[turnoverDictionary setObject:[NSNumber numberWithInt:0] forKey:currentPossession.squad];
}
//else {Do Nothing - squad was already in dictionary}
}
else if {currentPossession.didEndInScore == YES}
{
// ... Do all the same stuff as we did for turnover, except now add them to the scoreDictionary instead of the turnoverDictionary ...
}
}
person
GeneralMike
schedule
06.03.2013