Я создаю приложение для рейтинга ресторанов в Swift, которое позволяет пользователям оценивать рестораны по 5-звездочной шкале (точно так же, как Zomato и Yelp).
Я буду использовать Firebase для хранения рейтинга каждого пользователя для определенного ресторана, а затем взять среднее значение пользовательских рейтингов и отобразить его в приложении. Каждой ячейке табличного представления будет присвоен звездный рейтинг (каждая ячейка табличного представления соответствует ресторану).
Однако я глубоко застрял в проекте. Я не могу понять, как добавить рейтинг пользователя в базу данных. Мое приложение не требует регистрации пользователя или страницы входа, пользователи могут напрямую оценивать рестораны. Кроме того, как я могу убедиться, что пользователи могут голосовать только один раз за один ресторан? Буду признателен за любую помощь! Заранее спасибо.
Вот мой код:
var starsRating = 0
var starsEmptyPicName = "star" // can change to empty star picture name
var starsFilledPicName = "starfill" // can change to filled star picture name
override func draw(_ rect: CGRect) {
let starButtons = self.subviews.filter{$0 is UIButton}
var starTag = 1
for button in starButtons {
if let button = button as? UIButton{
button.setImage(UIImage(named: starsEmptyPicName), for: .normal)
button.addTarget(self, action: #selector(self.pressed(sender:)), for: .touchUpInside)
button.tag = starTag
starTag = starTag + 1
}
}
setStarsRating(rating:starsRating)
}
func setStarsRating(rating:Int){
self.starsRating = rating
let stackSubViews = self.subviews.filter{$0 is UIButton}
for subView in stackSubViews {
if let button = subView as? UIButton{
if button.tag > starsRating {
button.setImage(UIImage(named: starsEmptyPicName), for: .normal)
}else{
button.setImage(UIImage(named: starsFilledPicName), for: .normal)
}
}
}
}
@objc func pressed(sender: UIButton) {
setStarsRating(rating: sender.tag)
}
}
А вот мои функции просмотра таблицы:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return identifiers.count //identifiers is my big restaurants array
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "CellThree")
cell.textLabel!.text = identifiers[indexPath.row]
return cell
}