オプションのプロパティがオプションのプロパティに準拠したクラス -- swift フィールド 関連 問題

Class With Non-Optional Property Conforming To Protocol With Optional Property












6
vote

問題

日本語

オプションのプロパティを持つプロトコルと、同じプロパティを持つプロトコルに準拠する必要があるクラスがありますが、オプション以外のプロパティとして、クラスをプロトコルに準拠させる方法を実行します。

<事前> <コード> protocol MyProtocol { var a: String? { get set } } class MyClass { var a: String } extension MyClass: MyProtocol { // What do I put here to make the class conform }
英語

If I have a protocol that has an optional property, and a class that needs to conform to the protocol which has the same property already, but as a non-optional property, how do I make the class conform to the protocol.

protocol MyProtocol {     var a: String? { get set } }  class MyClass {     var a: String }  extension MyClass: MyProtocol {     // What do I put here to make the class conform } 
</div
  
 
 

回答リスト

5
 
vote
vote
ベストアンサー
 

残念ながら、 CSS3 で異なるタイプで同じ変数を再分割することはできません。

Dennisが機能することをお勧めしますが、 date.isBefore(end)14 以外のオプションで変数を保持したい場合は、コンピューターのプロパティを使用して保存された変数を折り返すことができます。

<事前> <コード> CSS5
 

Unfortunately, you can't redeclare the same variable in MyClass with a different type.

What Dennis suggests will work, but if you want to keep your variable in MyClass non-Optional, then you could use a computed property to wrap around your stored variable:

protocol MyProtocol {     var a: String? { get set } }  class MyClass {     // Must use a different identifier than 'a'     // Otherwise, "Invalid redeclaration of 'a'" error     var b: String }  extension MyClass: MyProtocol {     var a: String? {         get {             return b         }         set {             if let newValue = newValue {                 b = newValue             }         }     } } 
</div
 
 
       
       
0
 
vote

次のように、プロトコルに準拠するためにクラスオプションのプロパティを作成するだけです。

<事前> <コード> date.isBefore(end)16
 

You just have to make the property of the class optional as well in order to conform to the protocol, as follows:

protocol MyProtocol {     var a: String? { get set } }  class MyClass {     var a: String? // Added '?' }  extension MyClass: MyProtocol {     // Nothing needed here to conform } 
</div
 
 
 
 

関連する質問

12  UIBUTTONのUIControlStateの「アプリケーション」の使用は何ですか?  ( Whats the use of uicontrolstate application of uibutton ) 
Apple Doc を通過しましたが、その アプリケーションの使用に利用可能な追加の制御状態フラグ。 その単なるゲッター方式で、いつ設定されますか? ...

20  Timer.ScheduledTimerはSwift 3では機能しません  ( Timer scheduledtimer does not work in swift 3 ) 
メソッド func adjustmentBestSongBpmHeartRate() を1.1秒ごとに呼び出したい。私はタイマーを使いましたが、うまくいきません。私は文書を読み、たくさんのサンプルコードを見つけました、それはまだ仕事をします!私が逃したことはあ...

2  12HR日付フォーマットを使用する場合は、日付形式が常にNILを返します。  ( Date format always return nil when using 12hr date format ) 
この質問はすでにここで回答を持っています IOS NSDate比較は、次のように機能します24時間の日付設定はオンとオフの間に切り替わりますか? (2回答) ...

0  SwiftのTableViewでフッターを使用してセクションの下にラベルをアップロードする方法は?  ( How do i can upload label under the sections by using footer in the tableview in ) 
スタックオーバーフロー。 私はそれらのフッターが既知のフッターとして細胞の下のラベルを作るための多くの方法を持っているかもしれないことを理解しています。 index.rowを使用してフッターを作成する方法を知っています。自動タイトル、イメージ、アレイを使...

0  Xcode 10.2をXcode 11.2.1に更新しました。これにより、元のSWIFTプロジェクトを実行できなくなりました。  ( I updated xcode 10 2 to xcode 11 2 1 resulting in the original swift project un ) 
信号による誤差の誤差:アボートトラップ:6は解決されていません。特定のエラーログは次のとおりです。 <事前> <コード> 2. While running pass #0 SILModuleTransform "SerializeSILPass". 3. ...

-3  セグメント化コントロールデザインを正方形から円に変更する方法  ( How to change segmented control design from square to circle ) 
この写真のように、セグメント化コントロールデザインを正方形から円に変更する方法 この写真から この写真に <事前> <コード> @IBOutlet var segmentedcontrol: UISegmentedControl! override ...

0  DidSelectrowat IndexPathで正しいエンティティを選択する方法  ( How to select the correct entity in didselectrowat indexpath ) 
My tableview は、 name 属性によってソートされています。だから私が "Hanna"という名前を入力したら、 tableview は次のようになります。 ベル Hanna しかし私が1つのセルを選択すると、私が入力した順序のた...

439  Swiftプログラミング言語で文字列のn番目の文字を入手する  ( Get nth character of a string in swift programming language ) 
どのようにして文字列のN番目の文字を入手できますか?私は運さないでブラケット(<コード> [] )アクセサを試しました。 <事前> <コード> stuff = function (thing, callback) { var inputs = $('d...

0  AlamoFireクロージャからメインスレッドへのデータを移行する方法  ( How to migrate data from alamofire closure to main thread ) 
Alamofireを使用してランダムなウェブページへの要求を生成しています。私は見出しの話のタイトルをつかみ、メインスレッドに保存してメンセルに渡したいです。 <事前> <コード> @Entity @Table(name="CARS") public cl...

4  SWIFT:WebViewの<img>または画像サイズのみを変更する方法  ( Swift how to change only img or image sizes in webview ) 
私はサーバーからHTMLを取得して、それをUIWebViewに表示しています。要件のため、「スケールページ」オプションは選択されません。 UIWebView幅は画面幅と等しく、コンテンツによって高さは異なります。 HTMLのイメージタグには、WebViewのビ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有