Создание словаря [string: Class] в Swift 4 - PullRequest
0 голосов
/ 09 июня 2018

Я искал способ хранения в быстром словаре, строку в качестве ключа и класс в качестве значения

По сути, я хочу сохранить: ["view": UIView.self, "gment ": UISegmentedControl]

это так, что я могу проанализировать json и сравнить с параметром относительно класса, содержащегося в словаре, например так:

func checkObject<T>(_ object : T, forKey key : String) -> Bool {
   if let d = dictionary_of_string_classes[key], d.self == T.self {
     return true
   }

   return false
}

однако,реализация решения ускользает от меня через 2 дня

Любая помощь приветствуется

Ответы [ 2 ]

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

Что вы думаете об этом решении?

var dictionary_of_string_classes: [String: Any.Type] = [:]
dictionary_of_string_classes["1"] = String.self
dictionary_of_string_classes["2"] = URL.self

func checkObject<T: Any>(_ object : T.Type, forKey key : String) -> Bool {
    return dictionary_of_string_classes[key] == object.self
}

print(checkObject(String.self, forKey: "1")) // true
print(checkObject(String.self, forKey: "2")) // false
0 голосов
/ 09 июня 2018

Может быть что-то вроде этого

var dictionary_of_string_classes: [String: NSObject.Type] = [:]
dictionary_of_string_classes["hello"] = UITableView.self

func checkObject<T>(_ object : T, forKey key : String) -> Bool {

    if let d = dictionary_of_string_classes[key], d.self is T {
        return true
    }

    return false
}

checkObject(UICollectionView.self, forKey: "hello") //false
checkObject(UITableView.self, forKey: "hello") //true
...