后台返回字段新用户newUser,我在model里面添加了,然后运行就报标题的错,当时就觉得奇怪,不就是一个属性吗,大意了,真没想到还会犯这种错误,连基础的都忘记了,第一时间居然没意识到。记录下来,引以为戒。
1.翻译内容
属性遵循cocoa命名约定,返回“owned”对象。
2.原因
property的命名使用了cocoa的命名约定,也就是property的命名开头使用了保留字new、copy等。
简而言之,就是不要以 **alloc,new,copy,mutableCopy,**为开头。
3.解决方案
既然不允许,我们就改为其它就行,例如是newUser,我们可以改成newuser。
这时候,我们可能会想,后台的返回的是newUser,我们使用newuser不就接收不到了吗?
这个好办,我们很多model处理的第三方库,都可以处理属性替换名称,例如MJExtension
+ (NSDictionary *)mj_replacedKeyFromPropertyName
{
return @{@"newuser": @"newUser"};
}
或者使用系统自带的
- (void)setValue:(id)value forUndefinedKey:(NSString *)key
{
if ([key isEqualToString:@"newUser"]) {
self.newuser = value
}
}
都可以解决以上问题。