当前位置:  开发笔记 > IOS > 正文

奇怪的UITableViewCell加载异常

如何解决《奇怪的UITableViewCell加载异常》经验,为你挑选了2个好方法。

在我的应用程序中,我使用自定义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,不适用于您.



1> Taras Kalapu..:

在dev论坛中找到解决方案

创建此文件:

UITableViewCellContentView.h

#import 
@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


WANING:请勿在运送应用中使用此功能.这是一个私人课程,苹果可能不会想让你跟他们打交道.这是3.2 SDK中的一个已知错误,它将得到修复.最好不要在当前版本上安装测试版SDK.安装到其他位置以便您可以玩游戏,但保留当前的SDK以用于今天需要发布的工作.

2> Mike Fahy..:

哦,哦.我遇到了同样的问题......还使用了今天的新SDK(01/28/2010).无法确定代码是否正常工作,因为我刚刚更新到新SDK后添加了它.

现在还有其他人看到这个问题吗?有解决方案吗

更新:我刚刚将模拟器切换到SDK 3.2(从3.12开始),而且知道它现在正在工作(在iPhone和iPad模拟器中).但是,在使用SDK 3.12进行编译时,它不起作用.

我的猜测是IB正在以3.2的新格式保存XIB吗?有谁知道如何强制它以旧(3.12)格式保存?这肯定感觉像一个错误,因为它打破了以前工作的代码.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有