新的ios - 不确定如何使用财产

时间:2015-07-23 13:39:07

标签: ios objective-c

我一直在浏览following tutorial并遇到过这条线,我不明白它是如何运作的:

NSArray *upcomingWeather = [self.weather upcomingWeather];

我试图了解这是如何工作的,并花了很长时间。这就是我所知道的。 comingWeather是一种提取json部分并将其返回到数组中的方法。但是,我不知道这是为了什么目的:self.weather< - 不知道如何使用它。你能解释一下self.weather的意义吗?

1 个答案:

答案 0 :(得分:0)

[self.weather upcomingWeather];

Objective-c中没有任何功能,有消息。 self.weather是您向其发送邮件upcomingWeather的对象。这些消息类似于函数,但有一个很大的不同:如果对象为nil,则异常被静音,发送消息时不会出现错误。

此外,在任何给定的情况下,[%@%@]中的第一部分是一个对象,第二部分是您要发送的消息。如果您有多个参数,则将其用作:

[self.weather upcomingWeather:parameterOne andWithParameterTwo:parameterTwo];

这里要提到的重要一点是,在宣布功能时,你有两个部分:私人和公共。您通过访问公共部分发送消息并在函数中使用私有部分。为了更好地理解这一点,请看一下示例:

-(void) test:(NSString*)PO andWithParameterTwo(NSString*)PW{}

POPW是私有部分 - 您在方法中使用它们,而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消息时,将调用此方法。