我一直在浏览following tutorial并遇到过这条线,我不明白它是如何运作的:
NSArray *upcomingWeather = [self.weather upcomingWeather];
我试图了解这是如何工作的,并花了很长时间。这就是我所知道的。 comingWeather是一种提取json部分并将其返回到数组中的方法。但是,我不知道这是为了什么目的:self.weather< - 不知道如何使用它。你能解释一下self.weather的意义吗?
答案 0 :(得分:0)
[self.weather upcomingWeather];
Objective-c中没有任何功能,有消息。 self.weather
是您向其发送邮件upcomingWeather
的对象。这些消息类似于函数,但有一个很大的不同:如果对象为nil,则异常被静音,发送消息时不会出现错误。
此外,在任何给定的情况下,[%@%@]中的第一部分是一个对象,第二部分是您要发送的消息。如果您有多个参数,则将其用作:
[self.weather upcomingWeather:parameterOne andWithParameterTwo:parameterTwo];
这里要提到的重要一点是,在宣布功能时,你有两个部分:私人和公共。您通过访问公共部分发送消息并在函数中使用私有部分。为了更好地理解这一点,请看一下示例:
-(void) test:(NSString*)PO andWithParameterTwo(NSString*)PW{}
PO
和PW
是私有部分 - 您在方法中使用它们,而andWithParametersTwo
是公共部分,您在发送该消息时可以访问它们。
编辑:
“等一下!”,你可能在想。这是什么[self.weather upcomingWeather]如果self.weather是一个普通的旧NSDictionary,如何 它知道“即将到来的天气”是什么吗?使其更容易显示 数据,我在NSDictionary中添加了几个帮助类别 启动项目:NSDictionary +天气NSDictionary + weather_package 这些类别添加了一些方便的方法,使其更容易一些 访问数据元素。您希望专注于网络部分 而不是导航NSDictionary键,对吗?
你是对的,self.weather
是字典,但是这个人创建了帮助程序类别,所以用这种方法扩展了NSDictionary(等等):
- (NSArray *)upcomingWeather
{
NSDictionary *dict = self[@"data"];
return dict[@"weather"];
}
因此,当您发送upcomingWeather
消息时,将调用此方法。