我有一组用户对象,其中一个存储在属性_selectedUser
中。当我将其注销时,它显示为:
{
uid = 5;
uname = xxxx;
}
但是,当我尝试使用以下内容访问uid时,出现错误:
NSNumber *useridnum = _selectedUser.uid;
错误:
[NSKnownKeysDictionary1 uid]:无法识别的选择器发送到实例
检索uid值的正确语法是什么?
答案 0 :(得分:2)
您尝试将密钥作为字典上的属性进行访问,而不是作为其包含的值。
正如D.C.在评论中建议的那样,使用以下代码:
NSNumber *useridnum = _selectedUser[@"uid];
或者:
NSNumber *useridnum = [_selectedUser objectForKey:@"uid"];
你在评论中说对象是一个NSManagedObject。我不熟悉Core Data,但看起来您需要使用valueForKey:
:
NSNumber *useridnum = [_selectedUser valueForKey:@"uid"];
NSDictionary
不会将密钥直接存储为属性;它将它们存储在某种私有数据结构中。在不弄乱运行时的情况下动态存储密钥是不可能的,然后只有一组非常有限的字符串可以用作密钥(而不是基本上每个可能的对象),因为密钥必须是C标识符
您收到此错误,因为当您尝试将该键作为属性访问时,系统向该对象发送了一条消息,称该属性调用getter方法,但该getter方法不存在,因此应用程序崩溃