Прежде всего, прежде чем кто-либо разместит дерзкий пост с «двойным вопросом». Я прошел КАЖДЫЙ сингл в стеке, а затем некоторые. Подобные посты либо не применимы, либо не работают для меня.
Справочная информация:
Я пытаюсь создать приложение для связи с веб-сайтом (сервер в будущем, один шаг в время.) Я установил связь и проверил, что она работает. Короче говоря, данные, поступающие при печати, имеют перед собой «опционально».
Мой веб-сайт очень скудный и состоит из файлов html и js. js связан с моей html командой <"script">. Я пытаюсь использовать JSON-код в swift, но появляется сообщение об ошибке «not valid JSON». Когда я продолжаю расследование, я получаю ранее упомянутый «необязательный» в моих данных. Я пытался использовать "!" принудительно распаковать мои входящие данные, но мне выдается сообщение "не удается принудительно развернуть значение не необязательного типа" ??? Когда я пробую свой быстрый код на известном JSON веб-сайте (что-то, что я нашел на youtube), он работает нормально.
Очевидно, мой вопрос не является исключительно «принудительным развёртыванием». Предоставленное решение может изменить то, что необходимо для исправления этого ie. изменить то, что вопрос "должен был быть". Я открыт для любых решений, но, может быть, мы просто начнем с того, как я могу принудительно развернуть это?
Заранее спасибо.
XCODE (Swift)
super.viewDidLoad()
let url = URL(string: "https://*****for my eyes only*****.com/script.js")!
var request = URLRequest(url: url)
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data,
let response = response as? HTTPURLResponse,
error == nil else
{
print("error", error ?? "Unknown error")
return
}
guard (200 ... 299) ~= response.statusCode else
{
print("statusCode should be 2xx, but is \(response.statusCode)")
print("response = \(response)")
return
}
//shows data printed w/ optional in front of data
let htmlcontent = NSString(data: data, encoding: String.Encoding.utf8.rawValue)
print(htmlcontent)
//data is the portion I am trying to force unwrap
//currently produces error "not valid JSON"
let decoder = JSONDecoder()
let classes = try! decoder.decode([Class].self, from: data)
HTML Код
<html>
<body>
<script src="script.js"></script>
</body>
</html>
JS Код (взято из inte rnet - не мой)
{
"mothmap": {
"value": [
{
"longitude": -0.13025200000004133,
"latitude": 51.4596619
},
{
"longitude": -2.707384100000013,
"latitude": 53.7613383
}
]
}
}