2016-04-01 7 views
-1

Я разрабатываю приложение iOS, которое работает с местоположениями (метками), добавленными пользователями. Участки, добавленные пользователями, содержат данные (например, название и описание). Я хочу предоставить пользователям (администраторам) доступ к данным изменений для отправленных мест, но ТОЛЬКО для запрещенной зоны, например, города или страны.Получить аннотации для определенной области/страны (из базы данных)

Я использую Firebase для хранения мест (поэтому я могу связаться с ними как для iOS, так и для Android), но я не знаю, в какой структуре я должен их хранить. Сначала я подумал, что могу хранить местоположения на основе атрибута страны CLPlacemark, отправленного пользователями (например, если бы я отправил местоположение в Firebase с меткой placemark.country равным «Норвегия», то местоположение будет добавлено в массив " norway "внутри основного массива с именем« местоположения »).

Но язык ответа MapKit основан на языке устройства, поэтому, если язык устройства был норвежским, страной с меткой будет «Norge», а не «Норвегия», а затем не будет сохранено в «norway» -array. Из-за этого я не могу проверить, имеет ли админ доступ к определенной стране, потому что местоположения могут быть сохранены в «norway» или «norge» или название страны на других языках.

Как я могу заставить администраторов иметь доступ к данным об изменении для определенных стран/городов, если я не могу сортировать местоположения в Firebase?

Есть ли способ проверить название страны и название города на английском языке, а затем добавить их в Firebase на основе английского имени или мне нужно сохранить все местоположения в одном большом массиве и проверить их, когда я загружаю их из Firebase?

+0

При отправке вопросов вы должны указать код, который вы пробовали, а также свою структуру Firebase (как в виде текста, так и без фото). Это даст нам гораздо более четкое представление о том, что вы пытаетесь выполнить. Я отправил ответ, но вы действительно должны сократить свой вопрос, чтобы сделать его очень конкретным и предоставить короткий фрагмент кода. – Jay

ответ

0

Вам необходимо отключить свои данные от того, как они хранятся в Firebase. Существует 100 способов сделать это, но вот один из них.

Каждая страна_и_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 - это uid, найденный из authData.uid.

Код в вашем приложении будет ссылаться только на country_id_0 - так что фактическое название страны будет отключено от вашего кода. Другое преимущество, если название страны изменится, это не повлияет на ваш код; просто обновите дочерние узлы, содержащие строку имени.

Если вам нужно реальное имя в каком-то языке, вы можете просто ссылаться на

страны/country_id_1/Норвежский

, который будет возвращать «Франция»

Кроме того, если вы рассматриваете Хранить массив Firebase, могут быть лучшие варианты.

 Смежные вопросы

  • Нет связанных вопросов^_^