【问题标题】:Class is not key value coding-compliant for the key fullName - tableView类与键 fullName 的键值编码不兼容 - tableView
【发布时间】:2016-02-15 21:57:39
【问题描述】:

你好:)这是我的代码:

myView.m 是从 xib 加载的

- (void)loadData {


    self.players = [model.dbManager.playersDbManager selectAllEntities];

    [self.PlayersTableView reloadData];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return self.players.count; 
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


    CustomPopOverCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyCell"];
    if (cell == nil) {
        cell = [[CustomPopOverCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MyCell"];
    }
    // Configure the cell...
    Player *p = (Player *)[self.players objectAtIndex:indexPath.row];
    cell.fullName.text = p.firstName;
    cell.number.text = (NSString *)p.jerseyNumber;

    return cell;

}

myCustomCell.h:

@property (weak, nonatomic) IBOutlet UILabel *number;

@property (weak, nonatomic) IBOutlet UILabel *fullName;

我加载 xib 的 myVC :

self.popover = [[TaggingPopOver alloc] initWithFrame:CGRectMake(0, 0, contentContainer.frame.size.width, contentContainer.frame.size.height)];
    [UIViewHelper showView:self.popover InCenterOfView:contentContainer];
    self.popover.delegate = self;
    [self.popover.PlayersTableView registerNib:[UINib nibWithNibName:@"Cell" bundle:nil] forCellReuseIdentifier:@"MyCell"];
    [self.popover loadData];

This is the xib of customcell.

我尝试将全名 + 号码加载到我的自定义单元格中,但出现错误

类与键 fullName 的键值编码不兼容

我尝试了一切,但没有任何效果。有谁知道如何解决这个问题?

【问题讨论】:

  • 您的 IBOutlets 似乎没有连接到您单元的 XIB
  • 哪个类给出了错误?
  • 也许现在但是 IBOutlets 已链接并且是相同的错误:/ 我尝试了一切。我打开了异常断点,这一行给出了错误:cell.fullName.text = p.firstName;
  • 与您的问题无关:您真的不想为不同的屏幕尺寸使用不同的 .xib 文件。
  • 它创建的因为自动布局在字体大小等方面做得不好。它是自上而下的。

标签: ios objective-c uitableview uiview


【解决方案1】:

您在注册您的手机 ID 吗?

    UINib*          cellNib = [UINib nibWithNibName: self.cellID bundle: nil];
    NSAssert(cellNib != nil, @"Cell nib %@ doesn’t exist", self.cellID);
    [aTableView registerNib: cellNib forCellReuseIdentifier: self.cellID];

或在 .xib 文件中进行设置。

【讨论】:

  • 是的。在 xib 单元格中 identifire = MyCell
  • 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[ setValue:forUndefinedKey:]:此类与键 fullName 的键值编码不兼容。”完全错误
  • 但是 UITableView 是如何知道哪个 cellID 的呢?
  • 这可能是一个点。最好的方法是什么?当我有 UITbaleViewController 时,我总是在情节提要中设置它。
  • Aaaa 我在我的代码中使用了它:[self.popover.PlayersTableView registerNib:[UINib nibWithNibName:@"Cell" bundle:nil] forCellReuseIdentifier:@"MyCell"];
【解决方案2】:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


    CustomPopOverCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyCell"];
    if (cell == nil) {
        cell = [[CustomPopOverCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MyCell"];
    }
    // Configure the cell...
    Player *p = (Player *)[self.players objectAtIndex:indexPath.row];
    cell.fullName.text = [NSString stringWithFormat:@"%@",p.firstName];
    cell.number.text = (NSString *)p.jerseyNumber;

    return cell;

}

【讨论】:

  • 不幸的是它没有:(
【解决方案3】:

对我来说,这原来是 .xib 文件中的一个对象,它引用(使用旧名称)控制类中已重命名的 IBOutlet 属性。

即我在控制器中重命名了 IBOutlet 属性,但未能更新 .xib 文件中的连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 2013-05-23
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    相关资源
    最近更新 更多