iOS:用于检索数组中属性值的语法



我有一个用户对象数组,其中一个存储在属性_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 方法不存在,因此应用崩溃。

相关内容

  • 没有找到相关文章

最新更新