2016-04-01 16 views
-1

Kullanıcılar tarafından eklenen konumlarla (yer işaretleri) çalışan bir iOS uygulaması geliştiriyorum. Kullanıcılar tarafından eklenen yerler veri içerir (başlık ve açıklama gibi). Kullanıcılara (yöneticiler), yalnızca bir şehir veya ülke gibi kısıtlı bir alan için gönderilen yerlerin verilerini değiştirmek için erişim vermek istiyorum.Belirtilen bir bölge/ülke için (veritabanı) ek açıklama alın

Konumları depolamak için Firebase'i kullanıyorum (böylece hem iOS hem de Android için bunlara erişebiliyorum), ancak bunları hangi yapıda depolamam gerektiğini bilmiyorum. Öncelikle, kullanıcılar tarafından gönderilen CLPlacemark ülke özniteliğine göre konumlarını depolayabileceğimi düşündüm (örneğin, bir yer işareti Firebase'e bir plascemark.country ile "Norveç" e eşittirse, konum diziye eklenecektir) norway "" konumları "adlı bir ana dizinin içinde.

Ancak MapKit yanıt dili cihaz dilini temel alır, bu yüzden cihaz dili Norveççeyse, yer işareti ülkesi "Norveç" yerine "Norge" olur ve daha sonra "norway" dizisine kaydedilmez. Bu nedenle, yöneticinin belirli bir ülkeye erişimi olup olmadığını doğrulayamıyorum, çünkü yerler başka dillerdeki "norveç" veya "norge" veya ülke adıyla kaydedilebilir.

Konumları Firebase'de sıralayamazsam, yöneticilerin belirli ülkeler/şehirler için verileri değiştirmelerine nasıl erişebilirim?

İngilizce olarak ülke adını ve şehir adını denetlemenin ve ardından İngilizce adı temel alınarak Firebase'e eklemenin bir yolu var mı yoksa tüm konumları bir büyük dizide sakladım ve bunları yüklediğimde onları doğrula Firebase?

+0

Sorular gönderirken, Firebase yapınızın yanı sıra denediğiniz kodu da eklemelisiniz (her ikisi de metin olarak lütfen, resim yok). Neyi başarmaya çalıştığınıza dair bize daha net bir anlayış verecektir. Bir yanıt gönderdim ancak sorunuzu çok spesifik yapıp kısa kod snippet'i sağlamak için gerçekten kısaltmanız gerekiyor. – Jay

cevap

0

Verilerinizi Firebase'de nasıl depolandığından ayırmanız gerekir. Bunu yapmanın 100 yolu var ama burada bir tane var.

Her country_id_0, childByAutoId ile oluşturulur.

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

Ve yöneticilerinizi depolamak için bir yapı. Bu yapı ile

admins 
    user_id_0 
     country_id_0: true 
    user_id_1 
     country_id_1: true 

, (Fransa) user_id_0 (Norveç) country_id_0 üzerinde yönetici ayrıcalıklarına sahip ve user_id_1 country_id_1 Admin edebilirsiniz. User_id_x, authData.uid dosyasında bulunan kullanıcı kimliğidir.

Uygulamanızdaki kod yalnızca country_id_0 referansı olacak - böylece gerçek ülke adı kodunuzdan ayrılır. Ülke adı değişirse başka bir avantaj, kodunuzu etkilemez; Sadece ad dizesini içeren alt düğümleri güncelleştirin. Eğer bir dille gerçek adını gerekiyorsa

sadece referans verebilir

ülke/country_id_1/Norveçli Düşündüğünüz eğer Ayrıca 'Frankrike'

dönecektir

dizinin Firebase depolanması, daha iyi seçenekler olabilir.

İlgili konular