NSMutableDictionary的两种语法之间的差异

时间:2011-08-11 11:02:37

标签: arrays ios4 dictionary nsmutablearray nsmutabledictionary

任何人都可以告诉我这两种语法之间的确切区别, 我通过共同发现找到了它

Structre是这样的:

-> NSMutableArray (CategoryAry)
    ...> NSMutableDictionary (multiple number of dictionaries)


 NSLog(@"%@",[(NSMutableDictionary *)[CategoryAry objectAtIndex:indexPath.row+1] valueForKey:@"status"]);
 NSLog(@"%@",(NSMutableDictionary *)[[CategoryAry objectAtIndex:indexPath.row+1] valueForKey:@"status"]);

虽然两者都打印相同的结果。

1 个答案:

答案 0 :(得分:1)

[(NSMutableDictionary *)[CategoryAry objectAtIndex:indexPath.row+1] valueForKey:@"status"]);

将“objectAtIndex”转换为NSMutableDictionary *,然后在其中搜索值“status”。

(NSMutableDictionary *)[[CategoryAry objectAtIndex:indexPath.row+1] valueForKey:@"status"]);

“status”对象被转换为NSMutableDictionary *

第一个调用就是正确的语法。

对于第二个,它为什么有效?
在id上调用valueForKey方法,因为它似乎是一个字典,它可以工作并返回一个全面的结果。然后在该结果上,调用“description”方法(@​​“%@”),并且由于该方法存在于任何对象上,因此将结果转换为NSMutableDictionary不会产生错误。在返回的子类上调用该方法,并将该返回显示在NSLog中。

我想对于第二次调用,您可能有编译器警告?