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 ファイルの同じファイル: ( Works )
メインコードは次のとおりです。
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?
}