2016-04-01 85 views
-1

我正在開發一個iOS應用程序,可以與用戶添加的位置(地標)一起使用。用戶添加的位置包含數據(如標題和說明)。我想讓用戶(管理員)訪問更改已發送位置的數據,但僅限像城市或國家這樣的受限區域。獲取指定地區/國家的註釋(來自數據庫)

我正在使用Firebase存儲位置(所以我可以通過iOS和Android訪問它們),但我不知道我必須在哪種結構中存儲它們。我首先想到,我可以根據用戶發送的CLPlacemark國家/地區屬性來存儲位置信息(例如,如果我通過placemark.country等於「Norway」向Firebase發送了位置信息,則該位置信息將添加到該陣列中「挪威「在名爲」地點「的主陣列內)。

但是MapKit響應語言是基於設備語言的,所以如果設備語言是挪威語,那麼地標的國家將是「Norge」而不是「Norway」,並且不會被保存到「norway」數組中。因此,我無法驗證管理員是否可以訪問特定國家/地區,因爲可以使用「挪威語」或「norge」或其他語言的國家/地區名稱保存地點。

如果我無法對Firebase中的位置進行排序,如何讓管理員訪問某些國家/城市的數據更改?

有沒有辦法用英文檢查國家名稱和城市名稱,然後根據英文名稱將它們添加到Firebase中,或者是否必須將所有位置存儲在一個大陣列中,並在我從火力地堡?

+0

發佈問題時,您應該包含您已嘗試的代碼以及您的Firebase結構(包括文本請勿使用圖片)。它會讓我們更清楚地瞭解你正在努力完成的事情。我已經發布了一個答案,但你應該真的縮短你的問題,使其非常具體,並提供一個簡短的代碼片段。 – Jay

回答

0

您需要取消關聯您的數據與存儲在Firebase中的數據的關係。有100種方法可以做到這一點,但這裏有一個。

每個country_id_0都是用childByAutoId創建的。

countries 
    country_id_0 
    USA: "Norway" 
    Norwegian: "Norge" 
    country_id_1 
    USA: "France" 
    Norwegian: "Frankrike" 

還有一個結構來存儲您的管理員。

admins 
    user_id_0 
     country_id_0: true 
    user_id_1 
     country_id_1: true 

通過這種結構,user_id_0超過country_id_0具有管理員權限(挪威)和user_id_1可以聯繫country_id_1(法國)。 user_id_x是從authData.uid找到的uid。

您的應用程序中的代碼只會引用country_id_0 - 因此實際的國家/地區名稱與您的代碼無關。如果國家名稱發生變化,則不會影響您的代碼;只需更新包含名稱字符串的子節點即可。

如果您需要在一些語言的實際名稱,你可以直接引用

國家/ country_id_1 /挪威

將返回 'Frankrike'

另外,如果你正在考慮存儲數組的Firebase,可能會有更好的選擇。

相關問題