任何人都可以告诉我这两种语法之间的确切区别, 我通过共同发现找到了它
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"]);
虽然两者都打印相同的结果。
答案 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中。
我想对于第二次调用,您可能有编译器警告?