2016-04-01 7 views
-1

ユーザーが追加した場所(目印)を扱うiOSアプリを開発しています。ユーザーが追加する場所には、データ(タイトルや説明など)が含まれています。私は、送信された場所のデータを変更するためのユーザー(管理者)へのアクセスを許可したいが、都市や国のような制限されたエリアに対してのみ行う。指定された地域/国の注釈を取得する(データベースから)

私はFirebaseを使用して場所を保存しています(iOSとAndroidの両方に届くように)ので、どの構造で保存する必要があるかわかりません。最初に、ユーザーが送信したCLPlacemark国属性に基づいて場所を保存できると思っていました(たとえば、場所をFirebaseに送信した場合、placemark.countryが "Norway"に等しい場合、場所は配列 "ノルウェー "という名前のメインアレイ内にあります)。

しかし、MapKitの応答言語はデバイスの言語に基づいているため、デバイスの言語がノルウェー語の場合、目印の国は「ノルウェー」ではなく「ノルウェー」になり、「ノルウェイ」配列に保存されません。このため、管理者が特定の国にアクセスできるかどうかを確認することはできません。その理由は、「norway」または「norge」または他の言語の国名で保存できるためです。

Firebaseで場所を並べ替えることができない場合、管理者に特定の国/都市のデータを変更させるアクセス権を与える方法を教えてください。

英語で国名と市名を確認してから、英語名に基づいてFirebaseに追加する方法がありますか?または、すべての場所を1つの大きな配列に格納し、読み込むときに検証する必要がありますか?ファイアベース?

+0

質問を投稿する際には、試したコードとFirebase構造を含めてください(両方ともテキストで、写真はありません)。あなたが達成しようとしていることをはっきりと理解することができます。私は答えを投稿しましたが、あなたは本当にあなたの質問を短くして、それを非常に具体的にして、短いコードスニペットを提供するべきです。 – Jay

答えて

0

Firebaseに保存されているデータとの関連付けを解除する必要があります。これを行うには100の方法がありますが、ここには1つあります。

各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のみを参照するため、実際の国名はコードから切り離されています。国名が変更された場合のもう1つの利点は、コードには影響しません。名前文字列を含む子ノードを更新するだけです。

あなたには、いくつかの言語での実際の名前が必要な場合は、単に

国/ country_id_1 /ノルウェー

あなたが検討している場合、また、 'Frankrike'

を返します

を参照することができます配列のFirebaseを格納すると、より良いオプションがあるかもしれません。

関連する問題