Невозможно получить название календарей - PullRequest
1 голос
/ 15 октября 2011

Я представляю табличное представление, где пользователи могут выбирать, в какой календарь помещать событие.В iOS 5 я использую новый EKCalendarChooser, но для размещения тех, кто не обновляется, я делаю свой собственный выбор календаря.

Чтобы получить календари на телефоне, я использую это:

- (void)viewDidLoad 
{    
    [super viewDidLoad];        
    [self setWritableCalendars:[self getAllWritableCalendars]];
}


- (NSArray *)getAllWritableCalendars
{
    EKEventStore *eventDB = [[EKEventStore alloc]init];    
    NSMutableArray *allCalendars = [NSMutableArray arrayWithArray:[eventDB calendars]];
    NSPredicate *filter = [NSPredicate predicateWithFormat:@"allowsContentModifications == YES"];
    [allCalendars filterUsingPredicate:filter];

    NSArray *_writables = [NSArray arrayWithArray:allCalendars];

    return _writables;
}




- (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];
    }

    if ([[self writableCalendars] count] > 0)
    {
        cell.textLabel.text = [[[self writableCalendars] objectAtIndex:[indexPath row]] title];
    }
    else 
    {
        cell.textLabel.text = @"No calendars found";
    }
    return cell;
}

Проблема в том, что, хотя writableCalendars имеет два объекта, объект [[[self writableCalendars] objectAtIndex: [indexPath row]] title] всегда равен нулю.Представление таблицы представлено двумя ячейками, по которым можно щелкнуть мышью, но без текста.

Когда я принудительно запускаю этот код в iOS 5, он работает нормально, и отображаются все заголовки календаря.

Что такоеЯ здесь скучаю?

Ответы [ 2 ]

1 голос
/ 16 октября 2011

В вашем массиве есть два объекта, но действительно ли задан заголовок объекта? Может включать NSLog (@"%@", [[self.writableCalendars objectAtIndex:indexPath.row] description]);

В вашем viewDidLoad методе [super viewDidLoad]; должно быть первой строкой.

0 голосов
/ 03 февраля 2012

Из этого кода я записал следующий код

EKEventStore *eventDB = [[EKEventStore alloc]init];    
NSMutableArray *allCalendars = [NSMutableArray arrayWithArray:[eventDB calendars]];
for (int i=0; i<allCalendars.count; i++)
{
    NSLog(@"Title:%@",[[allCalendars objectAtIndex:i] title]);
}

Вывод:
2012-02-03 17: 47: 31.099 FunDoc [4100: 11f03] Название: Календарь
2012-02-03 17: 47: 31.100 FunDoc [4100: 11f03] Название: Дни рождения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...