ОБНОВЛЕНИЕ: Я решил начать с тех пор, пока я был на ранней стадии этого приложения. Я повторил все, и по какой-то причине пользовательская ячейка заняла второй раз. Я буду хранить старые файлы, чтобы подтвердить другой ответ, так как я полагаю, что я не единственный, у кого будет эта проблема.Пользовательская ячейка таблицы: «класс не соответствует ключевому значению, кодируемому»
Я создаю приложение с вкладками, которое требует специальных ячеек в его табличных представлениях. Я делал это несколько раз, и я всегда, кажется, нажимаю удар скорости при подключении этих пользовательских ячеек. Приложение загрузилось до тех пор, пока я не начал использовать пользовательскую ячейку в контроллере табличного представления под названием SongsTVC. Я получаю прекращение с причиной:
[<SongsTVC 0x6831330> setValue:forUndefinedKey:]:
this class is not key value coding-compliant for the key albumLabel.
Я использую this tutorial и использовал ее раньше (изменил несколько вещей для АРК и прошивки 5) с успехом. Фактически, код и формат IB, которые я использую, основаны на уже работающем проекте, который у меня есть. Я знаю об этой ошибке, которая обычно появляется, когда вы подключаете свои выходы к владельцу файла, а не к самой ячейке. Я не делаю эту ошибку, но она все еще дает мне эту ошибку. До сих пор я удалил ярлык, с которым он столкнулся, и даже полностью удалил файлы ячейки, чтобы начать все заново. Любая помощь будет оценена по достоинству.
SongCell.h
#import <UIKit/UIKit.h>
@interface SongCell : UITableViewCell{
}
@property(nonatomic, assign) IBOutlet UILabel *titleLabel;
@property(nonatomic, assign) IBOutlet UILabel *artistLabel;
@property(nonatomic, assign) IBOutlet UILabel *albumLabel;
@end
SongCell.m
#import "SongCell.h"
@interface SongCell()
@end
@implementation SongCell
@synthesize titleLabel, artistLabel, albumLabel;
@end
SongsTVC.h - заголовок TableViewController
#import <UIKit/UIKit.h>
@interface SongsTVC : UITableViewController{
UINib *cellLoader;
}
@end
SongsTVC.m - Соответствующие методы TableViewController
#import "SongsTVC.h"
#import "SongCell.h"
@interface SongsTVC()
@end
static NSString *CellClassName = @"SongCell";
@implementation SongsTVC
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
cellLoader = [UINib nibWithNibName:CellClassName bundle:[NSBundle mainBundle]];
}
return self;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
SongCell *cell = (SongCell *)[tableView dequeueReusableCellWithIdentifier:CellClassName];
if (!cell)
{
//CRASH ERROR POINTS HERE
NSArray *topLevelItems = [cellLoader instantiateWithOwner:self options:nil];
cell = [topLevelItems objectAtIndex:0];
}
// Configure the cell...
cell.titleLabel.text = @"SONG";
cell.artistLabel.text = @"Artist";
cell.albumLabel.text = @"Album";
return cell;
}
Interface Builder
ПРИМЕЧАНИЕ: Идентификатор ячейки был установлен в «SongCell» в IB, а владелец файла - UITableViewController, потому что в этой ячейке будет использоваться несколько таблиц. Пока представление представляет собой таблицу, оно должно работать (оно было в прошлом).
UPDATE: Файл XIB в формате XML был pasted here.
Где именно создается метод Определяется методом One? – rishi
@rishi Это метод экземпляра UINib, определенный Apple [здесь] (http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UINib_Ref/Reference/Reference.html#//apple_ref/ОКК/instm/UINib/instantiateWithOwner: варианты :). – Squatch
Спасибо, я не знал об этом, поэтому перед возвратом массива он сбой или он возвращает массив? – rishi