-1
문제입니다. 여기에서 json을 구문 분석하고 테이블보기에 표시하려면 신속한 4 및 디코딩 가능을 사용하고 있습니다. 하지만 형식 불일치 오류가 나타납니다. json :파싱 json xcode swift 4
https://newsapi.org/v2/top-headlines?sources=techcrunch&apiKey=50fb91212a47432d802b3b1ac0f717a3
내 구조는 다음과 같습니다.
struct Root : Decodable {
let status : String
// let totalResults : Int
let articles : [Article]
}
struct Article : Decodable {
let source: Source
let author, title, description: String
let url: URL
// let publishedAt: Date
let urlToImage: String
}
struct Source: Decodable {
let id, name: String
}
내있는 viewDidLoad는 다음과 같습니다
var articles : [Article]? = []
override func viewDidLoad() {
super.viewDidLoad()
tableview.delegate = self
tableview.dataSource = self
fetchArticles()
}
func fetchArticles(){
let jsonURLString = "https://newsapi.org/v2/top-headlines?sources=techcrunch&apiKey=50fb91212a47432d802b3b1ac0f717a3"
guard let url = URL(string: jsonURLString) else { return }
URLSession.shared.dataTask(with: url) { (data,response,err) in
guard let data = data else { return }
self.myArticles = [Article]()
do{
let decoder = JSONDecoder()
decoder.dataDecodingStrategy = .base64
let root = try decoder.decode(Root.self, from: data)
self.myArticles = root.articles
DispatchQueue.main.async {
self.tableview.reloadData()
}
} catch let error{
print(error)
}
}.resume()
}
내 cellForRowAtIndexPath 내가 무엇입니까
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let myCell = tableView.dequeueReusableCell(withIdentifier: "articleCell", for: indexPath) as! ArticleCell
let article = self.myArticles[indexPath.row]
myCell.title.text = article.title
myCell.body.text = article.description
myCell.author.text = article.author
myCell.imgView.downloadImage(from: ("https://tctechcrunch2011.files.wordpress.com/2017/04/uber-vs-waymo.png"))
return myCell
}
오류가 발생했습니다.
No errors, nothing loads to the table view.
OK, 난 여전히, 당신의 의견에 따라 변경입니다! – user3769888
위 질문에 새 코드를 게시했습니다. 한 번 확인해 주시겠습니까? 이제 오류가 없으며 문제를 이해했습니다. 하지만 왜 테이블 뷰가로드되지 않는가! – user3769888
답변에 제안 된 코드를 업데이트하는 질문을 수정하지 마십시오. 그것은 다른 독자를 혼동시킬 수 있습니다. 그리고 - btw - 당신은 데이터 소스 배열을 non-optional로 선언하겠다는 제 제안을 고려하지 않았습니다. 제가 실수를. 'root.articles'는'self.articles'에 할당되어야합니다. 나는 대답을 업데이트했다. – vadian