Я делаю небольшую программу, которая будет помещать некоторые события в календарь на 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];
}