Пользовательский UITableViewCell дает мне: этот класс не является ключевым значением, совместимым с кодировкой

Прежде всего, это обсуждение не решило мою проблему.

Пользовательский подкласс UITableViewCell: этот класс не является ключевым значением, совместимым с кодировкой

Настроить:

У меня есть массив объектов Person в MainViewController . Хотите показать объекты в UITableView в AllContactsViewController .

Проблема:

Все работает как ожидается, когда используется UITableViewCell по умолчанию. Когда я использую свой пользовательский TableCell я получаю сообщение об ошибке, указывающее на то, что этот класс не является ключевым для кодирования.

Эта ошибка возникает сразу после того, как я TableCell ЛЮБОЙ из моих трех outlets в IB с моим TableCell .

Заметка:

TableCell имеет три свойства: name и email + imageView .

Надеюсь, ты поможешь.

TableCell.h

 #import <UIKit/UIKit.h> @interface TableCell : UITableViewCell @property (weak, nonatomic) IBOutlet UILabel *nameLabel; @property (weak, nonatomic) IBOutlet UILabel *emailLabel; @property (weak, nonatomic) IBOutlet UIImageView *imageView; @end 

TableCell.m

 #import "TableCell.h" @implementation TableCell @synthesize nameLabel, imageView, emailLabel; 

AllContactsViewController.m

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellIdent = @"TableCell"; TableCell *cell = (TableCell *)[tableView dequeueReusableCellWithIdentifier:cellIdent]; if (cell == nil) { NSArray *array = [[NSBundle mainBundle]loadNibNamed:@"TableCell" owner:self options:nil]; cell = [array objectAtIndex:0]; } NSString *firstAndLastnameString = [NSString stringWithFormat:@"%@ %@", [(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] firstName], [(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] lastName]]; cell.nameLabel.text = firstAndLastnameString; cell.emailLabel.text = [(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] eMail]; cell.imageView.image = [(NewContact *)[self.allContactsArray objectAtIndex:[indexPath row]] contactPicture]; return cell; } 

ОБНОВИТЬ:

Возможно, скриншот поможет от IB.

введите описание изображения здесь

Добавлен полный файл AllContactsViewController.h

 #import <UIKit/UIKit.h> #import "VCDelegate.h" #import "TableCell.h" @interface AllContactsViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> @property (weak, nonatomic) id <VCDelegate>delegate; @property (weak, nonatomic) IBOutlet UITableView *allContactsTableView; @property (strong, nonatomic) NSMutableArray *allContactsArray; @property (assign) int currentArrayIndexNumber; - (IBAction)closeBtnTapped:(id)sender; @end 

Если вы подключаете выходы от владельца файла, вы должны сделать другое:

1 – Определите класс UITableViewCell для вашего класса TableCell:

введите описание изображения здесь

2 – Подключите розетки не от владельца файла, а из TableCell в списке объектов:

Подключите розетки

Если вы используете Xcode 6 GM, в IB есть ошибка, которая может привести к этой ошибке. Я не думаю, что у OP была эта проблема, потому что она более очевидна (вы можете увидеть «неопределенный класс MyXXXCell» в журнале), но из-за того, что вы получаете этот вопрос из Google, как я, просто попробуйте ввести имя класса в IB и нажмите Enter еще раз, и как только он действительно будет сохранен в файле раскадровки / xml, все будет хорошо.

У меня была такая же проблема, и любые комментарии здесь или в других дискуссиях помогли мне … в конце я просто сделал чистую причину, я был уверен, что делаю все правильно и да … магически работает!

Это случилось со мной сразу после слияния Git и разрешения нескольких конфликтов. Это привнесло мой проект XCode.

Я пробовал все StackOverflow. Сначала я думал, что мой пользовательский класс .m-файла не был добавлен в список классов источников компиляции. Но это один случай, однако даже после его добавления он дал мне такую ​​же проблему.

Как я решил:

  1. Я сохранил резервную копию моего .xib-файла и его резервных пользовательских классов .m и .h.
  2. Затем очистите проект и попробуйте запустить приложение через XCode (что может не сработать)
  3. Затем снова добавьте файлы в проект XCode, и он будет работать.

Ура!

Interesting Posts
Давайте будем гением компьютера.