Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«iOS. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 52

Автор Π’Π°Π½Π΄Π°Π΄ Нахавандипур

static NSString *SectionOddNumbers = @"Odd Numbers";

static NSString *SectionEvenNumbers = @"Even Numbers";


@implementation ViewController


Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ источника Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΎΡ‚ простой ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ:


β€” (NSMutableDictionary *) dictionaryOfNumbers{


if (_dictionaryOfNumbers == nil){

NSMutableArray *arrayOfEvenNumbers =

[[NSMutableArray alloc] initWithArray:@[

@0,

@2,

@4,

@6,

]];

NSMutableArray *arrayOfOddNumbers =

[[NSMutableArray alloc] initWithArray:@[

@1,

@3,

@5,

@7,

]];

_dictionaryOfNumbers =

[[NSMutableDictionary alloc]

initWithDictionary:@{

SectionEvenNumbers: arrayOfEvenNumbers,

SectionOddNumbers: arrayOfOddNumbers,

}];

}

return _dictionaryOfNumbers;

}


Пока всС Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ? Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρƒ нас Π΄Π²Π° массива, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТатся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ числа (Π² ΠΎΠ΄Π½ΠΎΠΌ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅, Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ β€” Ρ‡Π΅Ρ‚Π½Ρ‹Π΅). ΠœΡ‹ ассоциируСм массивы с ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ SectionEvenNumbers ΠΈ SectionOddNumbers, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ инстанцируСм Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄:


β€” (void)viewDidLoad

{

[super viewDidLoad];


self.barButtonAction =

[[UIBarButtonItem alloc]

initWithTitle:@"Delete Odd Numbers"

style: UIBarButtonItemStylePlain

target: self

action:@selector(deleteOddNumbersSection:)];

[self.navigationItem setRightBarButtonItem: self.barButtonAction

animated: NO];


self.tableViewNumbers = [[UITableView alloc]

initWithFrame: self.view.frame

style: UITableViewStyleGrouped];

self.tableViewNumbers.autoresizingMask = UIViewAutoresizingFlexibleWidth |

UIViewAutoresizingFlexibleHeight;

self.tableViewNumbers.delegate = self;

self.tableViewNumbers.dataSource = self;

[self.view addSubview: self.tableViewNumbers];


}


Π”Π°Π»Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ словаря источника с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ:


β€” (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView{


return self.dictionaryOfNumbers.allKeys.count;


}


β€” (NSInteger) tableView:(UITableView *)tableView

numberOfRowsInSection:(NSInteger)section{


NSString *sectionNameInDictionary =

self.dictionaryOfNumbers.allKeys[section];


NSArray *sectionArray = self.dictionaryOfNumbers[sectionNameInDictionary];

return sectionArray.count;


}


β€” (UITableViewCell *) tableView:(UITableView *)tableView

cellForRowAtIndexPath:(NSIndexPath *)indexPath{


UITableViewCell *cell = nil;


cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier

forIndexPath: indexPath];


NSString *sectionNameInDictionary =

self.dictionaryOfNumbers.allKeys[indexPath.section];


NSArray *sectionArray = self.dictionaryOfNumbers[sectionNameInDictionary];


NSNumber *number = sectionArray[indexPath.row];


cell.textLabel.text = [NSString stringWithFormat:@"%lu",

(unsigned long)[number unsignedIntegerValue]];


return cell;


}


β€” (NSString *) tableView:(UITableView *)tableView

titleForHeaderInSection:(NSInteger)section{


return self.dictionaryOfNumbers.allKeys[section];


}


Навигационная ΠΊΠ½ΠΎΠΏΠΊΠ° связана с сСлСктором deleteOddNumbersSection:. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΠΌ сСйчас прСдстоит Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ЦСль ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π΅Π³ΠΎ названия[2], β€” Π½Π°ΠΉΡ‚ΠΈ Ρ€Π°Π·Π΄Π΅Π», ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ всСм Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌ числам Π² источникС Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΉΡ‚ΠΈ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ искомый Ρ€Π°Π·Π΄Π΅Π» ΠΈ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΈ ΠΈΠ· источника Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это дСлаСтся:


β€” (void) deleteOddNumbersSection:(id)paramSender{


/* Π‘Π½Π°Ρ‡Π°Π»Π° удаляСм Ρ€Π°Π·Π΄Π΅Π» ΠΈΠ· ΠΈΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…. */

NSString *key = SectionOddNumbers;

NSInteger indexForKey = [[self.dictionaryOfNumbers allKeys]

indexOfObject: key];

if (indexForKey == NSNotFound){

NSLog(@"Could not find the section in the data source.");

return;

}

[self.dictionaryOfNumbers removeObjectForKey: key];


/* Π—Π°Ρ‚Π΅ΠΌ удаляСм Ρ€Π°Π·Π΄Π΅Π» ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. */

NSIndexSet *sectionToDelete = [NSIndexSet indexSetWithIndex: indexForKey];

[self.tableViewNumbers deleteSections: sectionToDelete

withRowAnimation: UITableViewRowAnimationAutomatic];


/* ΠΠ°ΠΊΠΎΠ½Π΅Ρ†, ΡƒΠ±ΠΈΡ€Π°Π΅ΠΌ с Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ,

Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π½Π°ΠΌ большС Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ся. */

[self.navigationItem setRightBarButtonItem: nil animated: YES];


}


ВсС довольно просто. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΌΠ΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π° Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ, Ρ€Π°Π·Π΄Π΅Π» Odd Numbers (НСчСтныС числа) исчСзнСт ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π² процСссС удалСния Ρ€Π°Π·Π΄Π΅Π»Π° Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ анимируСтся. Π­Ρ‚ΠΎ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ UITableViewRowAnimationAutomatic ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ withRowAnimation: ΠΌΠ΅Ρ‚ΠΎΠ΄Π° deleteSections: withRowAnimation: Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ запуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² эмуляторС iOS ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Debug β€” Toggle Slow Animations (ΠžΡ‚Π»Π°Π΄ΠΊΠ° β€” Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡƒΡŽ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ). ΠŸΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π° Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈ посмотритС, Ρ‡Ρ‚ΠΎ происходит. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ сопровоТдаСтся ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠ΅ΠΉ (Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ). ΠšΡ€Π°ΡΠΈΠ²ΠΎ, ΠΏΡ€Π°Π²Π΄Π°? Когда ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π½Π° рис. 4.16.


Рис. 4.16. Π Π°Π·Π΄Π΅Π», содСрТащий Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ числа, ΡƒΠ΄Π°Π»Π΅Π½ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°


Π’Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ². ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ ячССк. ΠœΡ‹ собираСмся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π΅Π΅ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π²ΠΎ всСх Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΡƒΠ΄Π°Π»ΡΠ»ΠΈΡΡŒ всС ячСйки, содСрТащиС числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ большС 2. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΡƒΠ΄Π°Π»ΠΈΠΌ всС Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ ΠΈ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ числа большС 2. Π˜Ρ‚Π°ΠΊ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ viewDidLoad ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°:


β€” (void)viewDidLoad {

[super viewDidLoad];


self.barButtonAction =

[[UIBarButtonItem alloc]

initWithTitle:@"Delete Numbers > 2"

style: UIBarButtonItemStylePlain

target: self

action:@selector(deleteNumbersGreaterThan2:)];

[self.navigationItem setRightBarButtonItem: self.barButtonAction

animated: NO];


self.tableViewNumbers = [[UITableView alloc]

initWithFrame: self.view.frame

style: UITableViewStyleGrouped];

self.tableViewNumbers.autoresizingMask =

UIViewAutoresizingFlexibleWidth |

UIViewAutoresizingFlexibleHeight;

self.tableViewNumbers.delegate = self;

self.tableViewNumbers.dataSource = self;

[self.view addSubview: self.tableViewNumbers];


}


На рис. 4.17 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ выглядит ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ запускС Π² эмуляторС iPhone.


Рис. 4.17. Кнопка, ΡƒΠ΄Π°Π»ΡΡŽΡ‰Π°Ρ всС ячСйки с числами большС 2


Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ связана с сСлСктором deleteNumbersGreaterThan2:. Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€ β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ Π²ΠΈΠ΄Π°. Но ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ, Ρ‡Ρ‚ΠΎ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

1. ΠΠ°ΠΉΡ‚ΠΈ ΠΎΠ±Π° массива с Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌΠΈ ΠΈ Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌΠΈ числами Π² источникС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ индСксныС ΠΏΡƒΡ‚ΠΈ (Ρ‚ΠΈΠΏΠ° NSIndexPath) чисСл большС 2. ПозТС ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этими индСксными путями для удалСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ячССк Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.

2. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ всС числа большС 2 ΠΈΠ· источника Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΊΠ°ΠΊ ΠΈΠ· словаря для Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл, Ρ‚Π°ΠΊ ΠΈ ΠΈΠ· словаря для Ρ‡Π΅Ρ‚Π½Ρ‹Ρ….

3. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ячСйки. Π˜Π½Π΄Π΅ΠΊΡΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ ΠΊ этим ячСйкам ΠΌΡ‹ собрали Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС.

4. Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ с Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ. Π­Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠ° большС Π½Π΅ понадобится, вСдь ячСйки ΡƒΠΆΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΈ ΠΈΠ· источника Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ эту ΠΊΠ½ΠΎΠΏΠΊΡƒ. Но ΠΌΠ½Π΅ каТСтся, Ρ‡Ρ‚ΠΎ для удобства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π»ΡƒΡ‡ΡˆΠ΅ просто ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΅ΠΌΡƒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ бСсполСзна.


β€” (void) deleteNumbersGreaterThan2:(id)paramSender{


NSMutableArray *arrayOfIndexPathsToDelete =

[[NSMutableArray alloc] init];

NSMutableArray *arrayOfNumberObjectsToDelete =

[[NSMutableArray alloc] init];


/* Π¨Π°Π³ 1: ΡΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ·

источника Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡ… ΠΈΠ½Π΄Π΅ΠΊΡΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ. */

__block NSUInteger keyIndex = 0;

[self.dictionaryOfNumbers enumerateKeysAndObjectsUsingBlock:

^(NSString *key, NSMutableArray *object, BOOL *stop) {


[object enumerateObjectsUsingBlock:

^(NSNumber *number, NSUInteger numberIndex, BOOL *stop) {


if ([number unsignedIntegerValue] > 2){

NSIndexPath *indexPath =

[NSIndexPath indexPathForRow: numberIndex

inSection: keyIndex];

[arrayOfIndexPathsToDelete addObject: indexPath];

[arrayOfNumberObjectsToDelete addObject: number];

}


}];


keyIndex++;

}];


/* Π¨Π°Π³ 2: ΡƒΠ΄Π°Π»ΡΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ· ΠΈΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…. */

if ([arrayOfNumberObjectsToDelete count] > 0){

NSMutableArray *arrayOfOddNumbers =

self.dictionaryOfNumbers[SectionOddNumbers];

NSMutableArray *arrayOfEvenNumbers =