JSON練習Dcard

Dcard Apiを使用してデータをキャプチャし、分析する練習をします

https://dcard.tw/_api/posts

次に、必要に応じて対応するデータを取得します。データがnullの場合は、追加する必要がありますか?nullにできることを確認してください。

コード化可能:エンコードまたはデコード可能、デコーダー:エンコード可能、エンコーダー:デコード可能

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
}

キャプチャされた日付には小数点が付いているため、.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)
}

提案された投稿

「その小さな島がすべてを変える」

ライダーのエクスペリエンスを向上させるために Lyft ライブ アクティビティをどのように設計したか

「その小さな島がすべてを変える」

ライドシェアの変革者 Lyft で行っているすべての業務の中で、乗客とドライバー間の送迎の振り付けは、最も複雑かつ重要な作業の 1 つです。この振り付けを成功させるには、Lyft が多くのことをうまくやっているかどうかにかかっていますが、単にライダーをスピードに乗せ続けることが不可欠です。

アプリのライフサイクル

アプリのライフサイクル

: アプリ起動からシャットダウンまでのサイクル: メモリやデータの管理による使いやすさ ⬆️ セキュリティ処理が可能 UIApplication、AppDelegate 状況: UIApplication オブジェクトから送信されたメッセージを AppDelegate オブジェクトが受信し、それぞれを実行する関数を定義 Not Running: アプリが実行されていない状態Inactive:アプリが実行されているがイベントが受信されていない状態Active: アプリが実行されており、イベントが発生している状態Background: アプリがバックグラウンドにあるがコードが実行されている状態Suspened: アプリが実行されている状態AppDelegate.swift ファイルでデリゲート関数となるコードをバックグラウンドで実行していません。 SceneDelegate iOS 13 以降でサポートされるマルチシーン機能にうまく対応するため、AppDelegate / SceneDelegate AppDelegate 1.

関連記事

地球を救ってお金を稼ぐ方法

地球を救ってお金を稼ぐ方法

ペットボトル、ガラス瓶、アルミ缶、グリーンエネルギーパッケージなどを、何回考えずに捨てたことがあるでしょうか? リサイクルする代わりに何かが得られたらいいのにと何度思ったことか。あなたがほとんどの人と同じなら、おそらく答えは何度もあるはずです。リサイクルは、多くの場合、即時的または具体的な利益をもたらさない面倒な作業、面倒な作業、または義務であると考えられています。

仕事週間で学ぶことはあなたが思っている以上に重要です

仕事週間で学ぶことはあなたが思っている以上に重要です

私たちは、自分にとって良いとわかっていることを実行するのに苦労していることによく気づきます。大切な人に愛していると伝えることから、海賊のように話すことを忘れないことまで、すでにそうしたことを行っているため、1日、1週間、または1か月のイベントは必要ないと主張する人が常にいます。

緩やかな浸食: 人々がキャリアを無駄に浪費する方法を明らかにする

緩やかな浸食: 人々がキャリアを無駄に浪費する方法を明らかにする

今日のペースが速く競争の激しい世界では、個人の成長、経済的安定、そして人生全体の満足度において、個人のキャリアが重要な役割を果たしています。しかし、多くの人は停滞と不満の絶え間ないサイクルに陥っており、職業生活が徐々に消耗していきます。

待ちの季節にできること(テクノロジー業界での最初の仕事に就くのを待っているとき)

待ちの季節にできること(テクノロジー業界での最初の仕事に就くのを待っているとき)

新しいキャリアへの転職は、一人でやろうとすると非常に困難になる可能性があります。あなたと同じ学習レベルにあり、同様の目標、粘り強さ、意欲を共有する責任パートナーを見つけることが重要です。