Esercitati a utilizzare Dcard Api per acquisire dati e analizzarli
https://dcard.tw/_api/posts
Quindi afferrare i dati corrispondenti in base alle proprie esigenze Se i dati possono essere nulli, è necessario aggiungerli? Assicurati che possa essere nullo.
Codificabile: può essere codificato o decodificato, Decoder: può essere codificato, Encoder: può essere decodificato
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 data acquisita ha un punto decimale, quindi aggiungi .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 punto di svolta per il rideshare Di tutte le cose che facciamo in Lyft, la coreografia dei pickup tra motociclisti e conducenti è una delle più complesse e consequenziali. L'inchiodamento di questa coreografia dipende dal fatto che Lyft faccia bene molte cose, ma è essenziale semplicemente mantenere i ciclisti al passo.
: Ciclo dall'avvio dell'app allo spegnimento: usabilità gestendo la memoria o i dati ⬆️ La sicurezza può essere elaborata UIApplication, situazione AppDelegate: definisce le funzioni in cui l'oggetto AppDelegate riceve il messaggio inviato dall'oggetto UIApplication ed esegue ciascuna Non in esecuzione: lo stato in cui l'app non è in esecuzione Inattivo: Lo stato in cui l'app è in esecuzione ma non vengono ricevuti eventiActive: lo stato in cui l'app è in esecuzione e si verifica un eventoBackground: lo stato in cui l'app è in background ma il codice viene eseguitoSuspened: lo stato in cui l'app è in background e non esegue codice per essere funzioni delegate nel file AppDelegate.swift SceneDelegate Per rispondere bene alla funzione di scena multipla supportata da iOS 13 in poi AppDelegate / SceneDelegate AppDelegate 1.
Nel mondo iperconnesso di oggi, i sistemi dei media svolgono un ruolo fondamentale nel plasmare l'opinione pubblica e, di conseguenza, nel processo decisionale democratico. Nella sua profonda analisi dell'economia politica della comunicazione, lo studioso Robert McChesney sfida la saggezza convenzionale e presenta quelle che definisce le "cinque verità" sui media.
Introduzione:Benvenuti, coraggiosi lettori, in un viaggio che ci porterà nelle profondità più oscure del nostro pianeta. In questo blog, ci addentriamo nel mondo enigmatico della Fossa delle Marianne, scoprendo i suoi segreti nascosti e scoprendo le verità agghiaccianti che giacciono sotto la sua superficie.
È una brillante mattina d'oro sulle dolci colline dell'ovest, mentre i primi raggi di sole illuminano l'erba ghiacciata sulle pianure. Una mandria di placidi bovini Angus, nerissimi e massicci, si staglia contro l'alba mentre percorrono un sentiero battuto verso un luogo che tutti conoscono bene; il bancone della colazione.
Recentemente sono stato su Linkedin, il social network professionale più grande del mondo, e ho trovato post di designer freelance che seguo che hanno attirato la mia attenzione. Tutti hanno postato foto dagli aeroplani, sulla spiaggia con i loro laptop, dalle piscine e dagli uffici con viste mozzafiato.