Carte d'exercice JSON

Entraînez-vous à utiliser Dcard Api pour capturer des données et les analyser

https://dcard.tw/_api/posts

Récupérez ensuite les données correspondantes en fonction de vos besoins. Si les données peuvent être nulles, devez-vous les ajouter ? Assurez-vous qu'il peut être nullable.

Codable : peut être codé ou décodé, Décodeur : peut être codé, Encodeur : peut être décodé

import Foundation
struct Feed: Codable {
var id: Int
var title: String
var school: String?
var forumName: String
var excerpt: String
var gender: String
var updatedAt: Date
var topics: [String]
var media: [Media?]
var likeCount:Int
var commentCount:Int
}
struct Media: Codable {
var url: String
}

La date capturée comporte un point décimal, vous devez donc ajouter .withFractionalSeconds.

let dateFormatter = ISO8601DateFormatter()
dateFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
let data = try decoder.singleValueContainer().decode(String.self)
return dateFormatter.date(from: data) ?? Date()
})

//開始下拉更新的功能
refreshControl = UIRefreshControl()
//修改顯示文字的顏色
let attributes = [NSAttributedString.Key.foregroundColor: UIColor.yellow]
//顯示文字內容
refreshControl?.attributedTitle = NSAttributedString(string: "正在更新", attributes: attributes)
//設定元件顏色
refreshControl?.tintColor = UIColor.white
//設定背景顏色
refreshControl?.backgroundColor = UIColor.black
//將元件加入TableView的視圖中
refreshControl?.addTarget(self, action: #selector(getData), for: UIControl.Event.valueChanged)
tableView.refreshControl = refreshControl
DcardClient.shared.getDecard(urlString: "https://dcard.tw/_api/posts/") { (dcards) in
if let dcards = dcards {
self.dcards = dcards
}
DispatchQueue.main.async {
self.tableView.reloadData()
}

override func viewDidLoad() {
let contentArray = feedDetail?.content.split(separator: "\n").map(String.init)
let mutableAttributedString = NSMutableAttributedString()
contentArray?.forEach {row in
if row.contains("http") {
mutableAttributedString.append(imageFrom: row, textView: cell.contentTextView)
} else {
mutableAttributedString.append(string: row)
}
}
DispatchQueue.main.async {
cell.contentTextView.attributedText = mutableAttributedString
cell.contentTextView.font = UIFont.systemFont(ofSize: 20)
}

Suggested posts

"Cette petite île change tout"

Comment nous avons conçu les activités en direct Lyft pour améliorer l'expérience des passagers

"Cette petite île change tout"

Un changeur de jeu pour le covoiturage De toutes les choses que nous faisons chez Lyft, la chorégraphie des ramassages entre les passagers et les chauffeurs est l'une des plus complexes et des plus conséquentes. Pour réussir cette chorégraphie, Lyft doit bien faire beaucoup de choses, mais il est essentiel de simplement tenir les coureurs au courant.

Cycle de vie de l'application

Cycle de vie de l'application

: Cycle du lancement de l'application à l'arrêt : Facilité d'utilisation en gérant la mémoire ou les données ⬆️ La sécurité peut être traitée UIApplication, AppDelegate situation : Définit les fonctions que l'objet AppDelegate reçoit des messages envoyés par l'objet UIApplication et exécute chaque Not Running : L'état dans lequel l'application n'est pas en cours d'exécutionInactive : L'état dans lequel l'application s'exécute mais aucun événement n'est reçuActive : l'état dans lequel l'application s'exécute et un événement se produitBackground : l'état dans lequel l'application est en arrière-plan mais le code en cours d'exécutionSuspened : l'état dans lequel l'application est dans le arrière-plan et en cours d'exécution aucun code à déléguer fonctions dans le fichier AppDelegate.swift SceneDelegate Afin de bien répondre à la fonction scène multiple prise en charge à partir d'iOS 13 AppDelegate / SceneDelegate AppDelegate 1.

Related posts

VIE SANS LIMITE

Quand tu grandis, on a tendance à te dire que le monde est comme il est et que ta vie est juste de vivre ta vie à l'intérieur du monde, sans jamais risquer ta vie, juste suivre un chemin tracé et mourir à la fin, et essayer de ne pas cogner trop les murs. Mais c'est une vie très limitée.

La performance solo de la fille aux cheveux roux

En mission de Hayden, Katie se filme en train de se masturber.

La performance solo de la fille aux cheveux roux

Il était minuit passé lorsque Hayden a ramené Katie à son dortoir universitaire après leur soirée ensemble. Elle avait un cours tôt le matin et n'avait plus de vêtements de rechange après être restée avec lui la nuit précédente.

Qu'est-ce qui rend un podcast influent ?

Qu'est-ce qui rend un podcast influent ?

La semaine dernière, j'ai remarqué un communiqué de presse, envoyé via PressGazette (un site Web d'information britannique). L'article annonçait qu'Acast, la société d'hébergement et de publicité de podcasts de Scandi, dirigerait un consortium d'éditeurs "probablement les plus influents" du podcasting.

"La fosse des Mariannes dévoilée : dévoiler les terrifiantes vérités cachées de l'abîme"

"La fosse des Mariannes dévoilée : dévoiler les terrifiantes vérités cachées de l'abîme"

Introduction :Bienvenue, courageux lecteurs, dans un voyage qui nous emmènera dans les profondeurs les plus sombres de notre planète. Dans ce blog, nous plongeons dans le monde énigmatique de la fosse des Mariannes, découvrant ses secrets cachés et découvrant les vérités effrayantes qui se cachent sous sa surface.