我已经阅读了有关多种方法的其他问题,但仍然不知道如何修复我的代码。我很感激你的帮助。我在发生错误的语句周围放了一个 * 。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"eventCell";
EQCalendarCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[EQCalendarCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
}
cell.titleLabel.text = [[self.eventsList objectAtIndex:indexPath.row] title];
cell.locationLabel.text = [[self.eventsList objectAtIndex:indexPath.row] location];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat: @"dd-MM-yy HH:mm"];
NSString *startDateString = [df stringFromDate:[[self.eventsList
objectAtIndex:indexPath.row] startDate]];
cell.startDateLabel.text = startDateString;
NSString *endDateString = [df stringFromDate:[[self.eventsList
objectAtIndex:indexPath.row] endDate]];
cell.endDateLabel.text = endDateString;
return cell;
}
提前感谢您的帮助。
答案 0 :(得分:7)
从self.eventsList
集合中转换检索对象的结果应该可以解决问题。 E.g:
cell.locationLabel.text = [((MyClassName *)[self.eventsList objectAtIndex:indexPath.row]) location];
用集合中类的名称替换MyClassName
。
答案 1 :(得分:3)
您需要将[self.eventsList objectAtIndex:indexPath.row]
强制转换为相关类型,以便编译器知道您正在处理的数据类型。
如果没有看到你的self.eventList列表是如何填充的,那么就不可能准确地告诉你解决方案,但你的行应该用这样的东西替换(为了清楚起见,分成两行,但你可以使用一个强制转换而不是一个变量以保持一行)
MyEventClass *event = [self.eventsList objectAtIndex:indexPath.row];
cell.locationLabel.text = [event location];
答案 2 :(得分:1)
您需要投射EKEvent类。这将解决您的问题......
EKEvent *event = [self.eventlist objectAtIndex:indexPath.row];
NSString *placeStr=[event location];
答案 3 :(得分:0)
在一种情况下,如果创建对象的工厂方法具有返回类型" id"然后编译器将检查所有类中的方法签名。如果编译器在多个类中找到相同的方法签名,那么它将引发问题。所以替换返回类型" id"使用"特定的班级名称"。