迅速なプロパティラッパー

それらが存在する理由を理解しましょう。コードの再利用性と読みやすさを向上させるために、それらの使用をどのように活用できるか。

なぜ必要なのですか?

プロパティを処理する場合、プロパティの値が初期化および変更されるときに同じロジックを関連付ける必要があります。たとえば、ルールのセットに従って値を検証したり、割り当てる前に値を変更したりします。1つの方法は、プロパティオブザーバー(willSet / DidSet)を使用することです。しかし、DRYに準拠していないすべてのプロパティで繰り返されているようです。より良い方法はありますか?はい、どのようなプロパティラッパーが存在するのか。これは公式ドキュメントがこれについて言っていることです。

プロパティラッパーは、プロパティの格納方法を管理するコードとプロパティを定義するコードの間に分離のレイヤーを追加します。たとえば、スレッドセーフチェックを提供したり、基になるデータをデータベースに保存したりするプロパティがある場合は、すべてのプロパティにそのコードを記述する必要があります。プロパティラッパーを使用する場合、ラッパーを定義するときに管理コードを1回記述し、それを複数のプロパティに適用してその管理コードを再利用します。ソース

すべてのプロパティラッパーは@propertyWrapperという単語で始まり、wrappedValueのプロパティが格納されています。wrappedValueのdidSetには、一般的な検証または変更ロジックを配置できます。wrappedValueのタイプは、ラップしているプロパティのタイプと同じである必要があります。

注:上記の例では、初期化子に渡される文字列を明示的に大文字にする必要があります。プロパティオブザーバーは、値またはオブジェクトが初期化された後にのみトリガーされるためです。

使用法:

かなりかっこいい😎そうです。あなたはprojectedValueが何であるか疑問に思うかもしれません。投影値プロパティを定義することで、より多くの機能を公開できます。$ variableNameでアクセスできます。異なるロジックとタイプを持つことができます。文字列を頻繁にトリミングする必要がある他の例を見てみましょう。

これで、trimmingCharacters関数をあちこちで呼び出す必要がなくなりました。プロパティの前に@Trimmedを追加すると、アクセスするたびに自動的に処理されます。

別の例を見てみましょう。既存の使用法またはユーザーのデフォルトをどのように刷新できるかです。ボイラープレートコードがたくさんあります。クレジット

userDefaultで値を取得して保存する方法を確認できます。それはよりエレガントで迅速なやり方です。

既知の問題点

  • エラー処理はまだサポートされていませんが、将来の迅速なリリースに含まれる可能性があります。プロパティラッパーからthrowを試すことができる場所。
  • プロパティラッパーでは構成が難しい。最も外側のラッパーが最も内側のラッパータイプの値に作用しているためです。以下のためのより多くの。

プロジェクトでプロパティラッパーを試してください。それはあなたのツールキットの素晴らしいツールになります。swiftUIが付属しているので、将来的にはこれを多用する可能性がありますので、ぜひ使ってみてください。読んでくれてありがとう!

リソース

SwiftBySundell

NSHipster

Swift Doc

読んでいただきありがとうございます!🚀この記事が気に入ったら、👏他の人も読めるようにしてください:)

詳細については、Twitterでフォローしてください。

提案された投稿

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

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

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

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

アプリのライフサイクル

アプリのライフサイクル

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

関連記事

脅威ハンティングのための OSINT の収集

脅威ハンティングのための OSINT の収集

サイバー愛好家の皆さん、こんにちは!OSINT for Threat Hunting シリーズへようこそ。最初の記事では、OSINT の概要と脅威ハンティングにおけるその重要性について説明しました。

ドメイン名に関する情報の検索

Brian P. Hogan 著『Small, Sharp Software Tools』からの抜粋

ドメイン名に関する情報の検索

facebook.com にリクエストを送信すると、コンピュータはドメイン名を検索してそのドメイン名を IP アドレスに変換し、コンピュータが接続できるようにします。

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

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

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

ポッドキャストが影響力を持つ理由は何ですか?

ポッドキャストが影響力を持つ理由は何ですか?

先週、私はPressGazette(英国のメディアニュースウェブサイト)経由で送信されたプレスリリースに気づきました。この記事は、スカンジナビアのポッドキャスト ホスティングおよび広告会社である Acast が、ポッドキャスティングにおいて「おそらく最も影響力のある」パブリッシャーのコンソーシアムを率いることになると発表しました。