2011-05-17 72 views
1

我正在使用facebook graph-api,并且正在提取签入密钥。大多数地方都有这个签入密钥,但每过一段时间,我都会找到一个没有签入的地方,但没有这个密钥。有没有办法检查零,并防止下面的代码炸毁我非常大的耙子?是否存在哈希零检查?

graph.get_object(5811874893).fetch("checkins") 
KeyError: key not found: "checkins" 


x = graph.get_object(x.place_id)["checkins"] 

根据以下反馈,我有以下错误,具有相同的主题:无检查。你将如何处理?

nil can't be coerced into Fixnum 

回答

2

您是否尝试过看是否has_key?是可用的,或使用graph.get_object(5811874893)["checkins"]而非graph.get_object(5811874893).fetch("checkins")

要返回0,如果没有签,做

graph.get_object(5811874893).fetch("checkins") { 0 } 

fetch后的块指定是否"checkins"不存在的事。

+0

这可以工作,但是当我只需要一个时,会导致2个API调用。有没有更好的办法? – 2011-05-17 23:58:02

+0

@JZ:检查我的答案的新版本。 – 2011-05-18 00:03:53

+0

您实际上并不需要块,您可以将其作为第二个参数'foo.fetch(“checkins”,0)' – 2011-11-06 18:19:41

1

为什么你不只是做

graph.get_object(5811874893)["checkins"] 

如果您访问使用[]散,没有错误将提高,你会得到一个零值(只要哈希不设置它到别的东西)。

+0

这可以工作,但返回nil。有没有办法检查零,如果是这样返回零? – 2011-05-17 23:52:32

+0

*也感谢您的帮助! – 2011-05-17 23:52:55