'(key: String, value: Any)' не может быть преобразовано в '[String: Any]'

это способ проверки параметра, если он целочисленный или нет.

if (is_int((int) $_GET['user_id']) && (int) $_GET['user_id'] != 0) {
    $user_id = $_GET['user_id'];
}
2
задан roberto tomás 17 January 2019 в 13:24
поделиться

2 ответа

Проблема в том, что каждое значение в entryParameters является словарем, поэтому, когда вы делаете entryParameters.forEach, вы получаете тип словаря в замыкании, а не (key, value).

Вы получите (key,value) при вызове forEach в этом словаре. Итак, ваш метод должен выглядеть примерно так:

func getIndices(with source: [String], in entryParameters: [[String:Any]]) -> [String:[Int:Any]] {
    var indices = [String:[Int:Any]]()
    source.forEach { item in indices[item] = [Int:Any]() }

    var index = 0
    entryParameters.forEach { entry in
        entry.forEach {(arg: (key: String, value: Any)) in
            let (key, value) = arg
            indices[key]?[index] = value
        }

        index += 1
    }

    return indices
}
0
ответ дан Mukesh 17 January 2019 в 13:24
поделиться

Я только что проверил это на Playground.

var double = [String:[Int:Double]]()
double["Taco"] = [2: 3.2]

func myFunc(double: [String:[Int:Double]]) {
    print(double.count) //Prints 1
    print(double["Taco"]!) //Prints [2:3.2]
}

func myFunc2(all: [String:Any]) {
    print(all.count) //Prints 1
    print(all["Taco"]!) //Prints [2:3.2]
}


myFunc(double: double)
myFunc2(all: double as [String:Any])

У меня есть свой начальный [String:[Int:Double]](). Внутри этого словаря я установил double["Taco"] = [2: 3.2]. Я могу использовать 2 разные функции, одну из которых принимают за исходный тип [String:[Int:Double]], и ее легко использовать, поскольку функции принимают один и тот же тип параметра. Тем не менее, теперь я создал функцию, которая использует словарь [String:Any]. Теперь, чтобы ИСПОЛЬЗОВАТЬ этот метод, мы ДОЛЖНЫ типизировать переменные при вызове метода [String:Any], как вы можете видеть ниже.

0
ответ дан impression7vx 17 January 2019 в 13:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: