【发布时间】:2013-09-14 11:40:14
【问题描述】:
我正在尝试使用我已经创建的方法(我们称之为自定义方法)来执行操作。
基本上,我正在解析 JSON 信息并获取纬度(然后最终我将通过相同的方式获得 logitude,但不是相同的方法,如果有意义的话,不同的方法相同)。当我使用下面的内容时,它可以工作并且我得到了字符串。
NSString *mapStringLatitude = [[[[self.mapPlacesDictionary objectForKey:@"result"]objectForKey:@"geometry"]objectForKey:@"location"]valueForKey:@"lat"];
返回(通过NSLog):
mapStringLatitude: 37.790943
这是正确的。我想让代码更容易阅读。所以我想要一个像 getLatitude 这样的方法来为我进行深入研究。我在下面:
-(NSString *)getLatitude
{
NSString *getLatitude = [[[[self.mapPlacesDictionary objectForKey:@"result"]objectForKey:@"geometry"]objectForKey:@"location"]valueForKey:@"lat"];
return getLatitude;
}
我希望使用此方法而不是上面的行。基本上我在看这里:http://bit.ly/1bh9o9R
它指出[someobject method],我无法做到这一点,即[self.mapDictionary getLatitude] 不起作用。
有人对原因有什么建议吗?
按要求附上。善后。
【问题讨论】:
-
1. “不工作”是什么意思精确?编译器错误?运行时错误? 2. 你知道你必须在你实现它的对象上调用方法吗?如果
getLatitude方法不是NSDictionary的一部分而是另一个类,则[dict getLatitude]将不起作用。 3. 不要在你的方法前面加上get,这不是Java。 Getter 没有那个前缀,而是更喜欢latitude。 -
Xcode 自动完成,我无法自动完成。好的,我将删除 get, 习惯。然后我尝试了 ViewController *c = [ViewController alloc]init] 然后 c.mapPlacesDictionary 仍然没有运气。当我尝试 [self getLatitude] 时,它会编译,但会在运行时崩溃。你知道我怎么能用这样的方法吗?
-
如果它在运行时崩溃,请发布显示的错误消息。我怀疑你仍然在一个与你实现它不同的类的对象上调用它。
-
我认为你做错的是:[self.mapDictionary getLatitude] 一定是[self getLatitude]
-
不要在方法前加上
get。这是为非常特殊的使用模式保留的,不是这样。它应该只是latitude。
标签: ios objective-c methods