繁体   English   中英

ios的新功能-不确定如何使用属性

[英]new to ios - not sure how property is being used

我已经阅读了以下教程 ,遇到了这一行,但我不明白它是如何工作的:

NSArray *upcomingWeather = [self.weather upcomingWeather];

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

[self.weather upcomingWeather];

Objective-c中没有功能,有消息。 self.weather是您向其发送upcomingWeather self.weather消息的对象。 这些消息与功能相似,但有一个很大的区别:如果对象为nil,则异常被静音,并且在发送消息时不会出错。

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

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

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

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

POPW是私有部分-您在方法中使用它们,而andWithParametersTwo是公共部分,并且在发送该消息时可以访问它们。

编辑:

“等一下!”,您可能在想。 这是什么? 如果self.weather是普通的NSDictionary,它怎么知道什么是“即将到来的天气”? 为了使显示数据更容易,我在启动程序项目的NSDictionary上添加了几个帮助程序类别:NSDictionary + weather NSDictionary + weather_package这些类别添加了一些方便的方法,这些方法使访问数据元素更加容易。 您想专注于网络部分而不是导航NSDictionary密钥,对吗?

没错, self.weather是字典,但是此人创建了帮助者类别,因此NSDictionary使用以下方法进行了扩展:

- (NSArray *)upcomingWeather
{
    NSDictionary *dict = self[@"data"];
    return dict[@"weather"];
}

因此,当您发送upcomingWeather消息时,将调用此方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM