Значение Nil, обнаруженное при развертывании необязательного параметра в Swift 3IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Значение Nil, обнаруженное при развертывании необязательного параметра в Swift 3

Сообщение Anonymous »

Я не разбираюсь в программировании на Swift и пытаюсь отобразить объекты JSON в приложении iOS, но при запуске кода постоянно получаю сообщение об ошибке «неожиданно обнаружено ноль при развертывании необязательного значения».
Вот код для отображения JSON:

Код: Выделить всё

import Foundation
import UIKit

class EventList
{
static var listOfEvents = [Event]()

static var eventService:EventService?

static func getEventsFromWebService()->[Event]
// _ siteURL:String, _ searchTerm:String
{
let searchURL = "http://api.eventful.com/json/events/search?
date=2018&app_key=wjwMpjZWRD7JXHPQ"
print ("Web Service call = \(searchURL)")

eventService = EventService(searchURL)

let operationQ = OperationQueue()

operationQ.maxConcurrentOperationCount = 1

operationQ.addOperation(eventService!)

operationQ.waitUntilAllOperationsAreFinished()

listOfEvents.removeAll()

let returnedJSON = eventService!.jsonFromResponse
let JSONObjects = returnedJSON?["event"] as! [[String:String]]

for eachJSONObject in JSONObjects
{
print("Creating Movie object from JSON: \(eachJSONObject)")
listOfEvents.append(Event(eachJSONObject))
}

return listOfEvents
}

private static func showCreatedList()
{
for evt in listOfEvents
{
print(evt.displayEvent())
}

}
}

class Event
{
private (set)var title:String
private (set)var city_name:String
private (set)var country_name:String
private (set)var venue_name:String
private (set)var venue_address:String
private (set)var start_time:String
private (set)var url:String
private (set)var isSaved:Bool

init?(_ t:String, _ ci:String, _ co:String, _ vn:String, _ va:String, _
s:String, _ u:String)
{
if ((t == "") || (va == "") || (s == ""))
{
return nil
}
else
{
title = t
city_name = ci
country_name = co
venue_name = vn
venue_address = va
start_time = s
url = u
isSaved = false
}
}

convenience init(_ JSONObject:[String:String])
{
let title = JSONObject["title"]
let city = JSONObject["city_name"]
let country = JSONObject["country_name"]
let venue = JSONObject["venue_name"]
let address = JSONObject["venue_address"]
let time = JSONObject["start_time"]
let url = JSONObject["url"]

self.init(title!,city!,country!,venue!,address!,time!,url!)!
}

func displayEvent()->String
{
let strEvent = "\(title) will take place at \(venue_name)"
return strEvent
}
}

class EventService:Operation
{
var urlReceived: URL?

var jsonFromResponse: [String:Any]?

init(_ incomingURLString:String)
{
urlReceived = URL(string:
incomingURLString.addingPercentEncoding(withAllowedCharacters:
CharacterSet.urlQueryAllowed)!)
}

override func main()
{
var responseData:Data?

do
{
responseData = try Data(contentsOf: urlReceived!)
print("Service call (request) successful! Returned: \
(responseData)")
}
catch
{
print("Service call (request) failed")
}

do
{
jsonFromResponse = try JSONSerialization.jsonObject(with:
responseData!,options: .allowFragments) as? [String:Any]
print("JSON Parser successful.  Returned: \(jsonFromResponse!)")
}
catch
{
print("JSON Parser failed")
}
}
}
Вот часть JSON, который я использую:

Код: Выделить всё

{
"last_item": null,
"total_items": "3983377",
"first_item": null,
"page_number": "1",
"page_size": "10",
"page_items": null,
"search_time": "0.129",
"page_count": "398338",
"events": {
"event": [
{
"watching_count": null,
"olson_path": "America/New_York",
"calendar_count": null,
"comment_count": null,
"region_abbr": "VA",
"postal_code": "23229",
"going_count": null,
"all_day": "0",
"latitude": "37.5949",
"groups": null,
"url": "http://richmond.eventful.com/events/lettermen-/E0-001-
102252139-0?utm_source=apis&utm_medium=apim&utm_campaign=apic",
"id": "E0-001-102252139-0",
JSON продолжает отображать различные объекты событий.
Ошибка отмечается в строке:

Код: Выделить всё

let JSONObjects = returnedJSON?["event"] as! [[String:String]]
Я работаю с людьми, которые использовали похожий код, но другой набор данных JSON, поэтому я не уверен, является ли проблема моими данными JSON или моим кодом.
Я работаю с людьми, которые использовали похожий код, но другой набор данных JSON, поэтому я не уверен, является ли проблема моими данными JSON или моим кодом.
п>

Подробнее здесь: https://stackoverflow.com/questions/476 ... in-swift-3
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»