Как получить значение из словаря, используя objectForInsensitiveKey в Swift? - PullRequest
0 голосов
/ 25 августа 2018

У меня была функция в Objective c, чтобы получить значение словаря, передающего ключ с нечувствительным ключом.

Моя функция в Задаче c:

-(UIFont *) languageFont {
    NSDictionary * users = @{@"Aaron" : @"English", @"Alice" : @"English", @"John" : @"Brasilian"};

    NSString * countryLaunguage = [users objectForInsensitiveKey:@"Alice"];

    return countryLaunguage;
}

Как я могу перевести эту функцию в Swift? Потому что в словаре я не могу найти аналогичную функцию, которая возвращает значение из ключа?

Спасибо!

1 Ответ

0 голосов
/ 25 августа 2018

Иметь расширение словаря и использовать функцию.

  extension Dictionary where Key == String {
        subscript(insensitive key: Key) -> Value? {
            get {
                if let k = keys.first(where: { $0.caseInsensitiveCompare(key) == .orderedSame }) {
                    return self[k]
                }
                return nil
            }
            set {
                if let k = keys.first(where: { $0.caseInsensitiveCompare(key) == .orderedSame }) {
                    self[k] = newValue
                } else {
                    self[key] = newValue
                }
            }
        }
    }

Пример:

var dict = ["Aaron" : "English", "Alice" : "English", "John" : "Brasilian"]
print(dict[insensitive: "alice"]!) // outputs "English"

Надеюсь, что это ответ на ваш запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...