isKindofClass为id

时间:2017-04-04 19:16:35

标签: objective-c

我有以下代码,它是预定义的NSArray但我将其分配给id变量。

我显示输出并希望显示类名,即使它在输出窗口显示<__NSArrayI ..... >,但我得到如下的空描述。我怎么能上课dic1

id dic1 =@[@{@"id":@"1",@"name":@"Test 1 "},@{@"id":@"2",@"name":@"Test 2"}];

(lldb) po dic1
<__NSArrayI 0x100300090>(
{
    id = 1;
    name = "Test 1 ";
},
{
    id = 2;
    name = "Test 2";
}
)

(lldb) po [dic1 isKindOfClass:[NSArray class]]
<object returned empty description>

更新

(lldb) p [dic1 isKindOfClass:[NSArray class]]
error: no known method '-isKindOfClass:'; cast the message send to the method's return type

1 个答案:

答案 0 :(得分:3)

这是一个总结所有评论的答案。

  1. 使用po打印对象类型的结果。使用p打印基本类型的结果。
  2. isKindOfClass:返回BOOL,因此您需要使用p,而不是po
  3. 由于dic1id,调试器不确定isKindOfClass:方法是什么,所以它不知道它的返回类型。添加一个演员表清楚:

    p (BOOL)[dic1 isKindOfClass:[NSArray class]]
    

    或者您也可以这样做:

    p [(NSObject *)dic1 isKindOfClass:[NSArray class]]
    
  4. 通常您不希望id使用dic1,但由于这是一项学习练习,请按照您的意愿行事。 :)