setValue:forUndefinedKey this class is not key value coding-compliant for the key
下午开发过程中遇到一个错误,结果被的真惨,从上午 11 点查错一直查到下午 2 点才找到错误的原因,真的郁闷的不行。
1. 自己对 IOS 开发还不熟悉
2. 不知道怎么得到错误的详细信息, 连调出来 All Output 面板查看错误信息都不知道,真的差劲
3. 有错误信息后应该直接去 stackoverflow 找答案。应为 IOS 开发中文方面的资料和分享实在太少,出错就要直接上 stackoverflow.
2013-07-12 15:49:43.476 MyPad[15944:f803] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<BenefitItemsTableCell 0x6d9bdd0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key.'
*** First throw call stack:
(0x1490022 0x127fcd6 0x148fee1 0xd90022 0xd01f6b 0xd01edb 0x420c88 0xd1cd50 0x60471a 0x1491dea 0x13fb7f1 0x60326e 0x475230 0xd886e94 0x65ea1 0x47cc54 0x47d3ce 0x468cbd 0x4776f1 0x420d42 0x1491e42 0x23e679 0x248579 0x1cd4f7 0x1cf3f6 0x25c160 0x3e0e84 0x3e1767 0x3f0183 0x3f0c38 0x3e4634 0x2329ef5 0x1464195 0x13c8ff2 0x13c78da 0x13c6d84 0x13c6c9b 0x3e0c65 0x3e2626 0x1a0ad 0x2535)
terminate called throwing an exception(lldb)
其中出错的代码在:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MyCustomerTableCell"; // 这行代码运行出错
MyTableCell *cell =(MyTableCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; ....
return cell;
}
关于这个奇怪的错误,在 stackoverflow 找到了这样的解释:
There are a couple of options to resolve this - i'll let you decide which is the most appropriate.
The reason it's failing is because the owner is being passed as nil. You're binding the actionText outlet to the file's owner in IB, but then when loading the nib, the owner is nil. I'd guess that when loading with a nil owner behind the scenes an NSObject is used, which is why you're getting the key/value error.
My previous advice to pass the cell as the owner would also fail as I didn't know how the Nib is constructed; the cell is nil as you've yet to create it (and dequeue is passing nil back, so even pass cell as the owner is still essentially passing nil).
Two options:
Instantiate a new cell in your -cellForRowAtIndexPath:(NSIndexPath *)indexPath implementation, and pass that new cell as the owner (but i'd guess that this isn't the best solution for you)
Or, and I'd suggest this is the better solution, change the binding of actionText in your nib file to the Alert Cell and not the file's owner (You have File's Owner and an Alert Cell - bind the UILabel to the actionText outlet of the Alert Cell, and not the File's owner, which is what's being done at present) - I suspect this is what you want. With that in mind file's owner can become an NSObject again.
------- Original answer kept below as the file's owner class is also a common cause for this error -------
It suggests that you've 'instantiated' an AlertCell in InterfaceBuilder, and you're binding something to actiontext, but the class isn't set to AlertCell, it's still NSObject?
Take a look at the class text box on the identify tab of the tool palette for that object in Interface Builder. The class should be AlertCell, but i'd guess it's still set to NSObject.
As an aside, and feel free to ignore this advice, but there are a couple of extra things i'd encourage you to do, purely from an Objective C expectations/conventions point of view:
Name your files after your class (upper case the first character of the filename).
Prefix your class names; two uppercase characters, typically your initials (i'd name it DWAlertCell, for example).
我这英文,也只能勉强看个大概,最后知道了原因在那里:MyTableCell.h 中的 outlet 上面。
去代码中一查,果然原因在这里。这是因为我 从 StoryBoard 中连接好 outlet 后又手工的在 MyTableCell.h 中更改了outlet 的名字,之后重新连接了 outlet,本来以为这样万事大吉,可是却从 StoryBoard 中逐个检查 Controller 的 outlet 后,发现我重命名的 outlet 那个控件上面之前的 outlet 没有删掉,和新添加的 outlet同事存在,郁闷,这是 XCODE bug 吗。
删掉老的 outlet 后,万事大吉,郁闷,烦!
所以这样的错误,就去检查 StoryBoard 中的 outlet。
setValue:forUndefinedKey this class is not key value coding-compliant for the key的更多相关文章
- 'NSUnknownKeyException' … setValue:forUndefinedKey:]: …not key value coding compliant
解决一个问题: 当我添加一个IBout, 报了如下错误 NSUnknownKeyException' … setValue:forUndefinedKey:]: …not key value codi ...
- reason: '[<__NSDictionary0 0x7fda88f00c90> setValue:forUndefinedKey:]: this class is not key value c
reason: '[<__NSDictionary0 0x7fda88f00c90> setValue:forUndefinedKey:]: this class is not key v ...
- iOS: setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key name.
这里指抛出一个假设: 如 果你在 storyboard中, 通过 Ctrl - Drag 方式声明了一个 @property , 但你又觉得 在 Ctrl - Drag 时 ,命名的proper ...
- *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ViewController > setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ViewController > ...
- '[<NSObject 0x8a4b500> setValue:forUndefinedKey:]
Bug如下: Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUnd ...
- setValue:forUndefinedKey
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewControlle ...
- iOS key value coding kvc在接收json数据与 model封装中的使用
iOS key value coding kvc在接收json数据与 model封装中的使用 使用 kvc 能够极大的简化代码工作,及以后的接口维护工作: 1:先创建MovieModel类.h和 . ...
- 公钥(Public Key)与私钥(Private Key)
公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分.公钥通常用于加密会话密钥.验证数字签 ...
- ssh无密码登录设置方法以及出现问题 ECDSA host key 和IP地址对应的key不同的解决
最近在做hadoop,因为要求各主机之间的用户必须相同,且为方便远程登录,需配置无密码登录 先附上ssh无密码登录设置方法: 先生成密钥并配置无ssh无密码登录本机,输入命令: ssh-keygen ...
随机推荐
- 【转】SHELL中的IFS详解
转自:http://smilejay.com/2011/12/bash_ifs/ 在bash中IFS是内部的域分隔符,manual中对其的叙述如下: IFS The Internal Field Se ...
- Ctrip Mydream
--我不知道以后如何,我不知道我做的事情能否持续,我只是希望有一天我真的在这条路上走下去了,我只希望去一次这里检验一下自己,我希望自己努力争取这个机会. .Net技术专家 岗位职责: 1.主导本领域的 ...
- js学习笔记 (继续)
转义字符不断行的空白格 nbsp:1 2半方大的空白 ensp 1 2全方大的空白 emsp 1 2小于号 < <大于号 > >双引号 " "AND符号 & ...
- BZOJ4597: [Shoi2016]随机序列
Description 你的面前有N个数排成一行.分别为A1, A2, … , An.你打算在每相邻的两个 Ai和 Ai+1 间都插入一个加号或者 减号或者乘号.那么一共有 3^(n-1) 种可能的表 ...
- jQuery整理
近几日总是在用js写一些东西,jq用的反而少了,最近在工作中总是会用到不常用的jQuery方法,之前觉得可能用到的情况比较少,便没在意这些方法,结果吃了亏,现在准备重新总结一些jQuery中的一些常用 ...
- [原创]MySQL innodb_rollback_on_timeout参数对锁的影响
环境:Server version: 5.6.21-log MySQL Community Server (GPL) 前提提要: innodb_rollback_on_timeout是 ...
- Visual Studio 2015 各版本对比及下载地址
2015年7月20日23时30分,微软举行了Visual Studio 2015的发布会,跟随者Visual Studio 2015 而来的是,.net 开源,C#支持wp,ios,android三大 ...
- MVC辅助方法
我相信很多人虽然经常用mvc去做一些东西,但是可能很少使用mvcHtml辅助方法 首先我们要创建一个mvc项目 二创建一个HtmlHelper文件夹 三编写文件 四调用辅助方法 调用辅助方法 和使用其 ...
- DM 多路径存储
DM多路径存储 系统环境:RHEL5.4 small install selinux and iptables disabled主机规划:主机网卡软件station133eth0: 192.168. ...
- ASP.NET vNext 概述
兼容Mono的下一代云环境Web开发框架ASP.NET vNext 我们知道了ASP.NET vNext是一个全新的框架,是一个与时俱进的框架.这篇文章将深入讨论在整体架构更多的细节,文档参照 ASP ...