Sport Calendar
Автор: Vitkovsky 11.07.2009 23:57
На подходе в App Store еще одна программа "Sport Calendar"Программа представляет собой спортивный календарь. В группе "Months" строки по месяцам. При переходе открывается список событий. С верху в строке указан период и вид спорта, в нижней строке - название. Далее открывается ссылка на сайт.

Данные формуруются из XML файла, которые можно обновить с сайта.
Программа предельно простая, опишу механизм обновления.
Правильным наверное было бы сделать через поток, но я в потоках еще не разбирался. И сделал проще, через таймер.
Определим таймер:
self.gTimer = [NSTimer scheduledTimerWithTimeInterval:timeInterval target:self selector:@selector(drawView) userInfo:nil repeats:YES];
И сама функция:
- (void)drawView {
if (load==1) {
[self reloadLinks];
}else if (load==2) {
[self reloadDatabase];
}
}
Функция обновления для "Months"
- (void) reloadLinks{
buttonMore.title = @"Load Links... ";
@try {
if (load==1) {
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
[parseMonths parseXMLFileAtURL:MonthsURL];
[parseMonths writeApplicationData:@"Months.xml"];
}
buttonMore.title = @"Ok... ";
}
@catch (NSException * e) {
NSLog ( @"Exception caught Links: %@", e);
if (load==1) {
[parseMonths parseXMLFile:@"Months"];
}
}
@finally {
load=2;
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
buttonMore.title = @"Load Database... ";
if (!connect) {
load=0;
[indicator1 stopAnimating];
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
buttonMore.title = @"Update Data";
buttonMore.enabled = YES;
buttonMore.style = UIBarButtonItemStyleBordered;
buttonDone.enabled = YES;
buttonDone.style = UIBarButtonItemStyleBordered;
buttonDone.title = @"Done";
}
}
}
Аналогичная функция и для модуля "Sports" только другой "URL", имя файла и через другой сласс
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
[parseDataBase parseXMLFileAtURL:SportsURL];
[parseDataBase writeApplicationData:@"Sports.xml"];
И все теперь для запуска обновления данных достаточно написать строку
load=1;
Если кому интересно глубже, пишите, постараюсь ответить.




