使用 Storyboard 创建并管理 UI 时,在运行 app 的时候出现了 2013-10-15 09:21:03.212 TestMSR[610:11303] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<MainViewController 0x7557c30> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key star.'
检查 storyboard 的 outlet 时也没发现自己连接过 star.....甚是奇怪。
在此处http://stackoverflow.com/questions/9950938/setvalueforundefinedkey/12302157#12302157
发现 了答案。
原来是昨天创建过 star outlet ,后来把它删除了,但是 storyboard 的 source code 并没有更新。
solutions: open .storyboard as source code, 删除关于 “star” 的 links,返回 xcode 重新编译。
问题解决!
分享到:
相关推荐
4. **如果对象实现了`valueForUndefinedKey:`或`setValue:forUndefinedKey:`,这些方法会被调用来处理未定义的键。** ### KVC设值和取值 #### 取值 要通过KVC获取属性值,可以使用`valueForKey:`方法: ```objc ...
这通常涉及`valueForUndefinedKey:`和`setValue:forUndefinedKey:`这两个方法,它们允许对象处理未知的键。 3. **尝试属性的ivar**:如果对象没有提供setter,KVC会尝试查找与属性关联的实例变量(ivar)。例如,...
4. **条件查询:** 通过`valueForUndefinedKey:`和`setValue:forUndefinedKey:`方法,KVC可以处理一些未定义的键,这在处理JSON数据时非常有用。 ### KVO与KVC的区别 1. **目的不同:** KVO主要用于对象间的数据...
这是通过实现`NSKeyValueCoding`协议中的`- (void)setValue:forUndefinedKey:`方法实现的。 4. **动态属性**:对于动态属性,KVC会查找`+ (BOOL)accessInstanceVariablesDirectly`类方法。如果返回`NO`,那么KVC会...
reason: '[<ViewController> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key label1.' 多余的连线没有删除(创建了多余的IBOutlet) 5.9 UILabel和UIImageView: UIKit中的...
- **异常处理**:KVC在找不到对应键的属性时会抛出异常,应使用`valueForUndefinedKey:`或`setValue:forUndefinedKey:`来捕获并处理这些情况。 ### 3. KVOTest DEMO 在`KVOTest`项目中,我们可以创建一个简单的类,...
4. **自定义KVC**:如果你的类有一些特殊的属性获取和设置逻辑,可以重写`accessInstanceVariablesDirectly`、`valueForUndefinedKey:`和`setValue:forUndefinedKey:`方法来自定义KVC行为。 **二、Key-Value ...
2. **寻找getter/setter方法**:如果实例变量不存在,KVC会查找与键名匹配的getter(`- (id)valueForUndefinedKey:`)和setter(`- (void)setValue:forUndefinedKey:`)方法。默认情况下,这些方法会抛出异常,但在...
- 当属性不存在时,KVC可能会尝试调用`valueForUndefinedKey:`和`setValue:forUndefinedKey:`方法,应适当处理这些情况以避免程序崩溃。 总结来说,KVC提供了一种灵活的访问对象属性的方式,尤其是在需要动态属性...
- .h和.m文件中,可能包含了属性定义(如使用`@property`关键字),以及`setValue:forUndefinedKey:`方法的重写,以处理未知键值对的映射。这样可以确保即使服务器返回的数据结构有所变化,模型也能正确地解析和...
如果属性不存在,KVC会调用`- (void)setValue:forUndefinedKey:`方法,这是一个默认未实现的方法,你可以自定义来处理未知键的情况。 在提供的代码示例中,我们创建了一个名为`myPerson`的类,其中包含了四个属性:...
-(void)setValue:(id)value forUndefinedKey:(NSString *)key { // 在这里可以进行错误处理,例如记录日志或忽略异常 NSLog(@"Error: Key '%@' not found.", key); } ``` 这样,当尝试使用一个不存在的键时,会...
生成setter方法,然后用方法respondsToSelector:判断Model是否定义了该属性,在Model中定义的属性,要和服务器返回字典中的Key一样,写错属性变量,程序不会崩溃,不需要重写setValue:(id)value forUndefinedKey:...
3. **解决未定义属性问题**:为了处理数据中包含但Model类中未定义的属性,可以重写`- (void)setValue:(id)value forKey:(NSString *)key`方法或`- (void)setValue:(id)value forUndefinedKey:(NSString *)key`方法...
接下来,你需要实现两个关键方法:`+ (NSDictionary *)replacedKeyFromPropertyName` 和 `- (void)setValue:(id)value forUndefinedKey:(NSString *)key`。前者用于指定字典中的键与模型属性的对应关系,后者用于...