Practique el uso de Dcard Api para capturar datos y analizarlos
https://dcard.tw/_api/posts
Luego, tome los datos correspondientes según sus necesidades. Si los datos pueden ser nulos, ¿debe agregarlos? Asegúrese de que pueda ser nulo.
Codificable: se puede codificar o decodificar, Decodificador: se puede codificar, Codificador: se puede decodificar
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 fecha capturada tiene un punto decimal, así que agregue .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)
}
Un cambio de juego para los viajes compartidos De todas las cosas que hacemos en Lyft, coreografiar las recolecciones entre pasajeros y conductores es una de las más complejas y trascendentales. Lograr esta coreografía depende de que Lyft haga muchas cosas bien, pero simplemente mantener a los pasajeros al día es esencial.
: Ciclo desde el inicio de la aplicación hasta el apagado: Usabilidad mediante la administración de memoria o datos ⬆️ La seguridad se puede procesar UIApplication, situación de AppDelegate: define las funciones que el objeto AppDelegate recibe el mensaje enviado desde el objeto UIApplication y ejecuta cada No en ejecución: el estado en el que la aplicación no se está ejecutandoInactivo: El estado en el que se ejecuta la aplicación pero no se reciben eventos. Activo: el estado en el que se ejecuta la aplicación y se produce un evento. Fondo: el estado en el que la aplicación se encuentra en segundo plano, pero el código se ejecuta. Suspendido: el estado en el que se encuentra la aplicación. en segundo plano y sin ejecutar código para delegar funciones en el archivo AppDelegate.swift SceneDelegate Para responder bien a la función de escena múltiple admitida desde iOS 13 en adelante AppDelegate / SceneDelegate AppDelegate 1.
A menudo nos encontramos luchando para implementar lo que sabemos que es bueno para nosotros. Desde decirle a un ser querido que lo amamos hasta recordar hablar como un pirata, siempre habrá quienes digan que no hace falta un día, una semana o un mes de eventos porque ya están haciendo esas cosas.
En 2022, con el lanzamiento de GPT-3, la habilidad de escritura parece perder importancia. Con IA, las personas con mala escritura también pueden generar personal de calidad.
En el mundo hiperconectado de hoy, los sistemas de medios juegan un papel fundamental en la formación de la opinión pública y, en consecuencia, en la toma de decisiones democrática. En su profundo análisis de la economía política de la comunicación, el académico Robert McChesney desafía la sabiduría convencional y presenta lo que él llama las “cinco verdades” sobre los medios.
Lo que es viejo ahora es nuevo otra vez y lo que solía ser algo reluciente ahora se siente aburrido. No me refiero a que los jeans JNCO regresen entre los chicos geniales del centro de la ciudad junto con otras modas de fines de la década de 1990.