2011-05-17 100 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