2017-02-14 20 views
0

Я получаю эту ошибку:Swift: не может преобразовать значение типа <> к ожидаемому типу аргумента <> при установке селектора

cannot convert value of type nsdictionary to expected argument type string

enter image description here
Вот мой код:

let json:NSDictionary = try JSONSerialization.jsonObject(with: dataResponse, options: []) as! NSDictionary 
self.performSelector(onMainThread: Selector(updateUIwithJsonResponse), with: json, waitUntilDone: true) 

performSelector называет эту функцию:

func updateUIwithJsonResponse(json:NSDictionary) { 
print(json) 
} 

Любой из вас знает, почему я получаю эту ошибку?

+0

1. Почему вы используете 'NSDictionary' вместо Swift словаря? 2. Почему вы используете 'performSelector' вместо' DispatchQueue'? – rmaddy

+0

@rmaddy, потому что мне не нужна очередь. Почему вы думаете, что лучше использовать DispatchQueue? – user2924482

+0

Использование 'DispatchQueue.main.async' намного проще и чище. Вы можете просто написать фактический код внутри блока. Не нужно возиться с селекторами, и он работает с любым количеством и типами параметров. – rmaddy

ответ

1

Ваш метод принимает параметр, поэтому попробуйте

self.performSelector(onMainThread: #selector(updateUIwithJsonResponse(json:)), with: json, waitUntilDone: true)

+0

Почему не удается удалить json: в #selector (updateUIwithJsonResponse (json :))? – user2924482

 Смежные вопросы

  • Нет связанных вопросов^_^