タスクはiOS 15の新しいビューモディファイアです.スウィフト
アップルは、新しいViewModifierを加えましたtask(priority:_:) IOS 15で.この修飾子は、任意のSwiftuiに追加することができますView .
公式のAppleドキュメントから
このビューが表示されるときに非同期タスクを実行します.
パラメータについての詳細は
1プライオリティタスク優先順位を作成するときに使用するタスクの優先順位.デフォルトの優先度はuserInitiated .
すべての優先順位リスト userInitiated high medium low utility background 2 Swiftuiがビューが表示されるときに非同期タスクとして呼び出すクロージャを操作します.Swiftuiは、アクションが完了する前にビューが消えた場合、自動的にタスクをキャンセルします.
この修飾子は、ビューに関連するいくつかの非同期ジョブを開始し、行うには良い点です.非同期タスクをキャンセルすることについて心配する必要はありません.Swiftuiはボックスから処理します.
Swiftuiは、Swiftuiがビューまたはビューを変更するIDを削除する前に、タスクが終了しない場合にタスクをキャンセルします.
Githubのリストユーザーを表示します.各ユーザーのログインとアバターイメージが表示されます.
まず最初に、機能はgithubからユーザーのJSONを得ます.その後、JSONをオブジェクトにデコードし、結果を
Full source code
読書ありがとう!また近いうちに.
task(priority:_:) avalible since iOS15+ macOS 12.0+ Mac Catalyst 15.0+ watchOS 8.0+ tvOS 15.0+
公式のAppleドキュメントから
このビューが表示されるときに非同期タスクを実行します.
func task(priority: TaskPriority = .userInitiated, _ action: @escaping () async -> Void) -> some View
ビューが表示されたときに、指定したアクションを非同期的に実行するビュー.パラメータについての詳細は
1プライオリティタスク優先順位を作成するときに使用するタスクの優先順位.デフォルトの優先度はuserInitiated .
すべての優先順位リスト
この修飾子は、ビューに関連するいくつかの非同期ジョブを開始し、行うには良い点です.非同期タスクをキャンセルすることについて心配する必要はありません.Swiftuiはボックスから処理します.
Swiftuiは、Swiftuiがビューまたはビューを変更するIDを削除する前に、タスクが終了しない場合にタスクをキャンセルします.
例:
Githubのリストユーザーを表示します.各ユーザーのログインとアバターイメージが表示されます.
List
コード@State private var users: [User] = []
var body: some View {
List(users) { user in
HStack(spacing: 16) {
AsyncImage(url: URL(string: user.avatarUrl)) { avatar in
avatar
.resizable()
.aspectRatio(contentMode: .fit)
.cornerRadius(16)
} placeholder: {
ProgressView()
}
.frame(width: 50, height: 50)
Text(user.login)
.font(.title2)
}.padding(.init(top: 4, leading: 0, bottom: 4, trailing: 0))
}.task {
self.users = await loadUsers()
}
}
機能に興味がありますloadUsers()
. ユーザーの読み込みは、List
が現れる.まず最初に、機能はgithubからユーザーのJSONを得ます.その後、JSONをオブジェクトにデコードし、結果を
List
'sデータソース.loadUsers()
機能func loadUsers() async -> [User] {
guard let url = URL(string: "https://api.github.com/users") else { return [] }
do {
let (data, _) = try await URLSession.shared.data(from: url)
return try JSONDecoder().decode([User].self, from: data)
} catch {
Swift.print(error)
return []
}
}
結果User
モデルstruct User: Codable, Identifiable {
let id: Int
let login: String
let avatarUrl: String
enum CodingKeys: String, CodingKey {
case id
case login
case avatarUrl = "avatar_url"
}
}
モデル実装Codable
JSON復号化プロトコル開花CodingKeys
スネークケースからの翻訳に使用されます🐍 キャメルケース🐫. Full source code
読書ありがとう!また近いうちに.
Reference
この問題について(タスクはiOS 15の新しいビューモディファイアです.スウィフト), 我々は、より多くの情報をここで見つけました https://dev.to/toni777772/task-new-viewmodifier-in-ios15-swiftui-16keテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol