Я использую табличное представление, чтобы люди могли оценивать различные элементы с помощью Cosmos. Каждый раз, когда пользователь оценивает элемент, например, производительность, значение будет добавлено в массив:
class RatingItem {
var key: String?
var item: String
var rating: Double
init?(item: String, rating: Double) {
// Initialization should fail if there is no name or if the rating is negative.
// The name must not be empty
guard !item.isEmpty else {
return nil
}
// The rating must be between 0 and 5 inclusively
guard (rating >= 0) && (rating <= 7) else {
return nil
}
// Initialize stored properties.
self.item = item
self.rating = rating
}
var dictValue: [String: Any] {
let createdAgo = kSecAttrCreationDate
return ["Rating_Item" : item,
"Rating_rating": rating,
"created_ago": createdAgo]
}
init?(snapshot: DataSnapshot) {
guard let dict = snapshot.value as? [String: Any],
let item = dict["Rating_Item"] as? String,
let rating = dict["Rating_rating"] as? Double
else {return nil}
self.key = snapshot.key
self.item = item
self.rating = rating
}
}
в моей функции cellForRowAt Я добавляю оценки следующим образом:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let rating = ratingStorage[indexPath.row]
// Fetches the appropriate meal for the data source layout.
let ratingItemT = ratingItems[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "TeamMemberRatingTableViewCell", for: indexPath) as! TeamMemberRatingTableViewCell
cell.update(rating)
cell.itemLabel.text = ratingItemT.item
cell.cosmos.didFinishTouchingCosmos = { [ weak self] rating in
self?.ratingStorage[indexPath.row] = rating
let item = RatingItem(item: ratingItemT.item, rating: rating)
self!.finalRating.append(item!)
}
return cell
}
}
Проблема с космосом заключается в том, что он передает значения, когда пользователь перестал касаться, что означает, что если он изменит свое решение, например, для творчества, я получу оба рейтинга в моем массиве ->
, например:
Креативность: 6 Креативность: 5
Чего я хочу сейчас достичь, так это того, что я могу удалить первую оценку для каждого двойного значения.
Может быть, кто-то может помочь! :)
Спасибо