Property follows Cocoa naming convention for returning 'owned' objects

692 阅读1分钟

后台返回字段新用户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
    }
}

都可以解决以上问题。