Я делаю небольшую программу, которая поместит некоторые события в календарь на iPhone.В настройках я позволю пользователю выбрать, какой календарь использовать.Чтобы представить, какие календари он может использовать, я извлекаю все календари из EKEventStore и сортирую те, которые не допускают изменений.На них подписаны другие сайты.
После того, как фильтр, который вроде бы в порядке, массив сокращен с 5 до 3 календарей, все объекты в массиве находятся вне области видимости, а список в виде таблицыпусто.
Чего мне не хватает?
Редактировать: проблема возникла, когда я начал с фильтрацией, поэтому я подумал, что это была проблема, но теперь кажется, что объекты выходят изобласть действия, когда - (NSArray *) availableCalendar возвращает массив.Нужно ли мне копировать это или что-то?
Изображение здесь: http://d.pr/35HY
-(NSArray*)availableCalendars{
NSArray *calendars;
EKEventStore *eventDB = [[[EKEventStore alloc]init]autorelease];
calendars = [[[NSArray alloc]initWithArray:[eventDB calendars]]autorelease];
return calendars;
}
- (void)viewDidLoad {
[super viewDidLoad];
allcalendars = [self availableCalendars];
[allcalendars retain];
localCalendars = [[NSMutableArray alloc]initWithArray:allcalendars];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"allowsContentModifications == YES"];
[localCalendars filterUsingPredicate:predicate];
calendarCountInt = localCalendars.count; //When I break the code here, the three objects are 'Out of Scope' and the count is three
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
if (calendarCountInt > 0)
{
cell.textLabel.text = [[localCalendars objectAtIndex:indexPath.row] title] ;
}
else {
cell.textLabel.text = @"No Calendars found";
}
return cell;
}
- (void)dealloc {
[localCalendars release];
[allcalendars release];
[super dealloc];
}