Я бы не советовал использовать guard let
в вашем init
методе, потому что предположим, что dictionary["title"]
пусто или недоступно, тогда он вернется из первой строки вашего кода, и то же самое произойдет для других. И для решения этой проблемы вы можете использовать Nil-Coalescing Operator
(означает, что вы можете назначить значение по умолчанию nil
или любое другое значение, если something["something"]
равно nil
или optional
)
Заменить
guard let title = dictionary["title"] as? String else { return }
guard let artist = dictionary["artist"] as? String else { return }
guard let label = dictionary["label"] as? String else { return }
guard let vinylID = dictionary["vinylID"] as? String else { return }
guard let vinylCountry = dictionary["vinylCountry"] as? String else { return }
guard let vinylLocation = dictionary["vinylLocation"] as? String else { return }
guard let year = dictionary["vinylYear"] as? String else { return }
guard let autoID = dictionary["autoID"] as? String else { return }
guard let isOut = dictionary["isOut"] as? Bool else { return }
guard let vinylFormat = dictionary["format"] as? String else { return }
с
let title = dictionary["title"] as? String ?? ""
let artist = dictionary["artist"] as? String ?? ""
let label = dictionary["label"] as? String ?? ""
let vinylID = dictionary["vinylID"] as? String ?? ""
let vinylCountry = dictionary["vinylCountry"] as? String ?? ""
let vinylLocation = dictionary["vinylLocation"] as? String ?? ""
let year = dictionary["vinylYear"] as? String ?? ""
let autoID = dictionary["autoID"] as? String ?? ""
let isOut = dictionary["isOut"] as? Bool ?? false
let vinylFormat = dictionary["format"] as? String ?? ""
И вам также необходимо обновить UI
в основной очереди, когда вы работаете с async
вызовами, как показано ниже:
DispatchQueue.main.async {
self.tableView.reloadData()
}