Условное добавление в массив - PullRequest
0 голосов
/ 22 февраля 2020

Я загружаю данные из Firebase в свой пользовательский "CommentModel" (newComment):

// Load the comment with id
func observeComment(commentId: String, completion: @escaping (CommentModel) -> Void) {
    let db = Firestore.firestore()
    db.collection("comments").document(commentId).getDocument { (snapshot, error) in
        guard let dic = snapshot?.data() else { return }
        let newComment = CommentModel(dictionary: dic)

        completion(newComment)
    }
}

Моя модель:

import UIKit

class CommentModel {

var postId: String?
var userUid: String?
var postText: String?
var postDate: Double?

init(dictionary: [String: Any]) {
    postId = dictionary["postId"] as? String
    userUid = dictionary["userUid"] as? String
    postText = dictionary["postText"] as? String
    postDate = dictionary["postDate"] as? Double
    }
}

Который дает мне следующий результат:

["user2" : 5], ["user1" : 4], ["user2" : 3], ["user1" : 2], ["user1" : 1]

Чего я пытаюсь достичь: вызвать функцию в "наблюдаемом" и добавить данные, если идентификатор пользователя еще не существует и если число меньше, чем существующего числа и загрузите его в новый «CommentModel», независимо от того, сколько у меня комментариев или пользователя.

Результат должен выглядеть следующим образом:

["user1" : 2], ["user1" : 1]

Поскольку у меня есть два идентификатора пользователя и возвращая наименьшее число.

Ответы [ 2 ]

1 голос
/ 22 февраля 2020

Словарь не может иметь повторяющиеся ключи, и словари не основаны на сортировке, они основаны на значении ключа. Это означает, что вы не можете заказать словарь.

Но, с другой стороны, быстро удалить значение из диктонары просто, нужно всего лишь

dic.removeValue(forKey: "user2")

с условным

var hues = ["Heliotrope": 296, "Coral": 16, "Aquamarine": 156]
if let value = hues.removeValue(forKey: "Coral") {
    print("The value \(value) was removed.")
}
// Prints "The value 16 was removed."
0 голосов
/ 22 февраля 2020

это так просто,

if v < comments["john"] { comments["john'] = v }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...