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