ios - JSON:URL(字符串:urlString)!不醒
问题描述
尝试获取 JSON 文件时出现此错误。
致命错误:在展开可选值时意外发现 nil:文件 /Volumes/Data/Models.swift,第 40 行
我的代码中的第 40 行:
static func fetchFeaturedSearch(_ completionHandler: @escaping (FeaturedSearch) -> ()) {
当我复制 JSON 数据并将其放在静态文件位置时,它就像一个魅力。但是当试图从搜索服务中读取 json 数据时,我遇到了错误。
然而数据看起来完全一样!
请帮我解决一下这个。
服务器 json 文件:(导致错误)
https://nabulsiapps.com/articles-flutter/search/?lang=en&search=god&platform=ios
静态 JSON 文件上的相同文件:(有效)
这是主要代码:
struct FeaturedSearch: Decodable {
var TotalNo: SearchCategory?
var categories: [SearchCategory]?
}
struct SearchCategory: Decodable {
let categoryName: String?
let categoryIcon: String?
let categoryId: Int?
let count: Int?
let articles: [articlesList]?
static func fetchFeaturedSearch(_ completionHandler: @escaping (FeaturedSearch) -> ()) {
let urlString = "https://nabulsiapps.com/articles-flutter/search/?lang=en&search=god&platform=ios"
//print(urlString)
URLSession.shared.dataTask(with: URL(string: urlString)!, completionHandler: { (data, response, error) -> Void in
guard let data = data else { return }
if let error = error {
print(error)
return
}
do {
let decoder = JSONDecoder()
let featuredSearch = try decoder.decode(FeaturedSearch.self, from: data)
//print(featuredSearch)
DispatchQueue.main.async(execute: { () -> Void in
completionHandler(featuredSearch)
})
} catch let err {
print(err)
}
}) .resume()
}
}
struct articlesList: Decodable {
let id: Int?
let old_id: Int?
let title: String?
let date: String?
let imageUrl: String?
let has_video: Int?
}
解决方案
推荐阅读
- javascript - 检查值是否为 CustomType
- javascript - 总小时数并显示总时间超过 24 与 momentjs
- react-native - 如何在标签上添加边距?
- python - 运行 Flask app.py 可以从终端运行,但不能从 PyCharm
- python - 这是 Python 上的一个错误,还是我需要了解更多关于逻辑的东西?
- r - 为什么我的 alteryx R 和 Rstudio 不能从同一个包库中提取?
- apache-spark - 默认情况下,我无法在 Apache Spark 2 中创建镶木地板表
- java - 如何在Java中增加字符串中的数字?
- node.js - 基本身份验证不适用于 Axios post Nodejs
- python - 使用带有子图的索引(nrows=1,ncols=1)