iOS:检索数组属性值的语法?

时间:2016-04-25 16:56:55

标签: ios nsarray

我有一组用户对象,其中一个存储在属性_selectedUser中。当我将其注销时,它显示为:

{
    uid = 5;
    uname = xxxx;
}

但是,当我尝试使用以下内容访问uid时,出现错误:

NSNumber *useridnum = _selectedUser.uid;

错误:

  

[NSKnownKeysDictionary1 uid]:无法识别的选择器发送到实例

检索uid值的正确语法是什么?

1 个答案:

答案 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方法不存在,因此应用程序崩溃