Подтвердить что ты не робот

Исключительное исключение загрузки UITableViewCell

В моем приложении я использую пользовательский NIB для загрузки UITableViewCells. Владелец файла NIB установлен таким образом, чтобы класс был моим контроллером просмотра. Затем я свяжу UITableViewCell с IBOutlet, который я ввел в файл заголовка. Все работало нормально, пока все это не прекратило работать и получило эту ошибку:

uncaught exception 'NSInvalidUnarchiveOperationException', reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (UITableViewCellContentView)'

Я выделил это исключение для [NSBundle loadNibNamed: owner: options:]

static NSString *CellIdentifier = @"SubjectCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"SubjectCell" owner:self options:NULL];
cell = customSubjectCell;

Я пробовал это на двух устройствах и симуляторе, но все они получают ту же ошибку. Сегодня я загрузил новый SDK, и я думаю, что это могло вызвать это.


ОБРАТИТЕ ВНИМАНИЕ:

Этот вопрос устарел, и исправление ниже было временным исправлением. Apple установила свой SDK, поэтому, если у вас установлена ​​самая новая версия SDK, это не относится к вам.

4b9b3361

Ответ 1

Найдено решение в форумах разработчиков

Создайте этот файл:

UITableViewCellContentView.h

#import <UIKit/UIKit.h>
@interface UITableViewCellContentView : UIView {
}
@end

UITableViewCellContentView.m

#include "UITableViewCellContentView.h"
@implementation UITableViewCellContentView

+ (id)alloc {
    return [UIView alloc];
}

+ (id)allocWithZone:(NSZone *)zone {
    return [UIView allocWithZone:zone];
}

@end

Ответ 2

О, о. У меня такая же проблема... Также, используя сегодня новый SDK (01/28/2010). Не могу точно сказать, работал ли код раньше, потому что я просто добавил его ПОСЛЕ обновления к новому SDK.

Кто-нибудь еще видит эту проблему сейчас? Любые решения?

Обновление: я просто переключил симулятор на SDK 3.2 (с 3.12), и whattaya знаю... он работает сейчас (в iPhone и iPad-симуляторе). Однако при компиляции с использованием SDK 3.12 он не работает.

Я предполагаю, что IB сохраняет XIB в новом формате для 3.2, возможно? Кто-нибудь знает, как заставить его сохранить в старом (3.12) формате? Это определенно похоже на ошибку, поскольку она нарушает предыдущий рабочий код.

Ответ 3

У меня было то же самое. Установил 3.2 beta из 3.1.2 и имел эту ошибку.

В конце это зафиксировало это: перестройте против Simulator 3.1, и я получил рабочую сборку в симуляторе. После этого строит против работы Simulator 3.1.2.