名为' location'的多种方法发现结果不匹配,参数类型或属性

时间:2014-04-14 10:48:09

标签: ios calendar-store

我已经阅读了有关多种方法的其他问题,但仍然不知道如何修复我的代码。我很感激你的帮助。我在发生错误的语句周围放了一个 *

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

提前感谢您的帮助。

4 个答案:

答案 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"使用"特定的班级名称"。