Следующий метод часто вызывается из файлов Objective-C (это смешанный проект Obj-C и Swift), и при определенных обстоятельствах я получаю нулевое значение для строки NSString, которая выдает исключение. Согласно этому сообщению Swift неявно преобразует строку NSString в строку без развертывания !. Как я могу обращаться с нулевым делом
Должен ли я использовать оператор if let? Если так, какой будет синтаксис? Я не могу заставить его работать.
@objc func download(surl: NSString, completion : @escaping (NSData) -> Void ) {
guard let url = URL(string: String(surl)) else {
//print("Can not get url with " , surl )
return }
let sessionConfig = URLSessionConfiguration.default
let session = URLSession(configuration: sessionConfig, delegate: nil, delegateQueue: nil)
let task = session.dataTask(with: url) { data, response, error in
if let data = data, error == nil {
let nsdata = NSData(data: data)
DispatchQueue.main.async {
completion(nsdata)
}
} else {
// print("Failure: %@", error?.localizedDescription);
}
}
task.resume()
}