В моем приложении есть следующий рабочий код:
func downloadJSON(completed: @escaping ([JsonFile.JsonBonuses]?) -> ()) {
let url = URL(string: "http://example.com/ExampleData.json")!
URLSession.shared.dataTask(with: url) { (data, response, error) in
if error == nil, let data = data {
do {
let posts = try JSONDecoder().decode(JsonFile.self, from: data)
completed(posts.bonuses)
self.defaults.set(posts.meta.version, forKey: "jsonVersion")
print("URLSession did not fail")
print("JSON Version Set to \(posts.meta.version)")
} catch {
print("Can't decode JSON: \(error)")
}
} else {
print("downloadJSON completed")
completed(nil)
}
}.resume()
}
Я хочу изменить этот URL-адрес на другой в зависимости от настроек UserDefaults. Поэтому я заключил URL-адрес let в оператор if следующим образом:
if devModeStatus == true {
let url = URL(string: "https://otherexample.com/Example2Data.json")!
} else if devModeStatus == false {
let url = URL(string: "http://example.com/ExampleData.json")!
} else {
print("Invalid Dev Status encountered!")
return
}
Однако, когда я делаю это, XCode жалуется на "Использование неразрешенного идентификатора" url "; вы имели в виду" erfl "?" на линии, которая говорит URLSession.shared.dataTask(with: url) { (data, response, error) in
Я не уверен, почему он жалуется на это изменение. Я использую ту же логику if / else else для печати сообщения о состоянии при первой загрузке этого представления, поэтому я знаю, что переменная верна.