您好我正在阅读Ray Wenderlich博客的AFNetworking教程,在本教程项目中,他编写了一些类别来扩展NSDictionary,其中一个类别如下所示:
#import "NSDictionary+weather_package.h"
@implementation NSDictionary (weather_package)
- (NSDictionary *)currentCondition
{
NSDictionary *dict = self[@"data"];
NSArray *ar = dict[@"current_condition"];
return ar[0];
}
- (NSDictionary *)request
{
NSDictionary *dict = self[@"data"];
NSArray *ar = dict[@"request"];
return ar[0];
}
- (NSArray *)upcomingWeather
{
NSDictionary *dict = self[@"data"];
return dict[@"weather"];
}
@end
我知道Objective-C中使用的类别。但实际上他写的代码对我来说似乎非常高,而且令人困惑。顺便说一下,我在谈论这些问题:
NSDictionary *dict = self[@"data"];
NSArray *ar = dict[@"current_condition"];
我真的不明白自我[@“数据”] 和 dict [@“current_condition”] 是如何工作的。
那么有人可以帮我理解这里发生了什么吗?这对我很有帮助。
PS: BTW这就是Ray在字典上调用他的类别方法的方式:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"WeatherCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
NSDictionary *daysWeather = nil;
switch (indexPath.section) {
case 0: {
daysWeather = [self.weather currentCondition];
break;
}
default:
break;
}
提前致谢。
答案 0 :(得分:0)
这一行:
NSDictionary *dict = self[@"data"];
只是一个很好的快捷方式:
NSDictionary *dict = [self objectForKey:@"data"];
"数据"是键,值是NSDictionary
对象。
与另一行相同,只是返回的值是一个数组。