問題タブ [optional-binding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
270 参照

ios - このオプションのバインドが期待どおりに機能しないのはなぜですか?

Objective-C アプリに Swift を導入しようとしています。

特定のプロパティが nil の場合にボタンを非表示にする UIViewController サブクラスがあります。オプションのバインディングを使用すると、私の Swift コードは次のようになります。

私の希望は、propertyThatCouldBeNil が nil の場合、if が満たされず、制御が else に続くことでした。しかし、それは起こっていることではありません。実際、ブレークポイントを設定すると、次のように表示されます...

その後者は、私を少しつまずかせているものです。入れ子ではなく、オプションである必要があると思いますが、正しいですか?

もう少し情報...

このクラス全体で modelObject を使用しているため、便宜上、暗黙的にラップ解除されたオプションとして定義されています...

ModelObjectClass は実際には Objective-C クラスであり、プロパティは読み取り専用であり、そのように宣言されています...

その実装では、実際には、別の準備ができている専用プロパティの一種のプロキシとして機能します...

そして someOtherProperty も同様にヌル可能です...

オプションのバインディングが期待どおりに機能しない理由についての洞察はありますか?

0 投票する
2 に答える
612 参照

swift - if ステートメントから変数をグローバルにする

JSON をエンコードしているときに、ステートメントを使用してアンラップしif letていますが、変数をグローバルに使用できるようにしたいと考えています。

これは可能ですか?そうでない場合は、ifこの中で声明を出すことができますが、それは賢明ではないと思いますし、可能でさえないと思います.

0 投票する
5 に答える
1764 参照

swift - prepare(segue:) の switch ステートメントでオプションのバインディングを使用する方法

迅速に、switch ステートメントの優れた機能を使用して、宛先ビュー コントローラーのタイプprepare(segue:)に基づいてケースを作成できます。

例:

しかし、セグエが分割ビュー コントローラーによってトリガーされ、宛先がナビゲーション コントローラーであり、本当にやりたいことは、ナビゲーション コントローラーのトップ ビュー コントローラーのクラスをオンにすることである場合はどうなるでしょうか。

私はこのようなことをしたい:

複数の部分のif letオプションのバインディングで使用するのと同じ構造があります。

それはうまくいきません。代わりに、次のようなかなり面倒な構成を行う必要があります。

それは機能しますが、不必要に冗長に見え、意図がわかりにくくなります。Swift 3 でこのような switch ステートメントの場合、マルチパートのオプション バインディングを使用する方法はありますか?

0 投票する
1 に答える
267 参照

ios - Swift3、アンラップ オプション(SQLite.swift 内)

最も優れた SQLite.swift では、

それぞれの「トリッキー」はOptional<Binding>

各トリッキーをアンラップするために私が知っている唯一の方法は、このようなものです

var printable:String = "

この例では、Int64 または String (または String に渡されるもの) のいずれかのみであると確信しています。おそらくデフォルトのケースで、他の可能性をカバーする必要があると思います。

より迅速な方法はありますか?

の型を取得する方法はありOptional<Binding>ますか?

(ところで、特に SQLite.swift に関しては、「列 n の型を取得する」ために doco から私が知らない方法があるかもしれません。それはクールですが、前の段落の質問は一般的に残っています。 )

0 投票する
2 に答える
839 参照

swift3 - オプションのバインディングの OR 条件?

コンマで区切られSwift 3.1たステートメントにいくつかのオプションのバインディングを含めることができ、それが演算子のように動作することをドキュメントで見ました。ifAND

2 つのオプション プロパティがあり、どちら (または両方) が であるかどうかを確認し、nilnil 以外のプロパティをアンラップしてから、コード ブロックを実行するとします。これを使用して:

両方のプロパティがアンラップされている場合 (条件)にのみ、ifステートメント ブロックを実行します。ANDしかし、私にとっては、これらのプロパティの少なくとも 1 つが非 nil であり、ifステートメント ブロック ( ORcondition ) 内のコードを実行するだけで十分です。しかし、私がこれを好きなら:

しかし、非 nil プロパティのラップされていない値はありません。ifコードのステートメントブロックでラップされていない値を利用できるようにして、オプションのチェーンを回避したいと思います。

これを達成するためのベストプラクティスで最もコンパクトな方法はどれですか?