[解決済み] NSSession dataTaskWithRequest 完了ハンドラーが、エラーパラメーターに暗黙的にラップされていないオプショナルを使用するのはなぜですか?
2022-03-06 23:21:08
質問
私はSwiftの初心者なのですが、戸惑うことがありました。 によると のドキュメントでは、NSSession の場合、dataTaskWithRequestメソッドのシグネチャは以下のようになります。
func dataTaskWithRequest(_ request: NSURLRequest,
completionHandler completionHandler: ((NSData!,
NSURLResponse!,
NSError!) -> Void)?) -> NSURLSessionDataTask
completionHandler の NSError パラメータは、nil でも全く問題ないのに、なぜ暗黙のうちにアンラップされたオプションになるのでしょうか? 私は、それがNSError? オプションとして宣言されることを期待していました。 何か見逃しているものがあるのでしょうか?
解決方法は?
現在、iOS SDKには、この種の不整合が軒並み多く存在します。
現在、Swiftへの移行期間中で流動的な状態です。
これらのAPIはすべてObjective Cで書かれていることを思い出してください。 他にもNSURLなど、思い当たる例はたくさんあります。
しかし、ObjCからSwiftへの自動変換は、あなたが提供した上記の例のようないくつかの癖を残しています。
Apple は各クラスを見直し、Optionals に対するベストプラクティスのアプローチなど、API を近代化するための適切な変更を行っていますが、まだ完成していません。
関連
-
[解決済み】Xcode - 'NSUnknownKeyException', reason: ... this class is not key value coding-compliant for the key X" エラーの修正方法とは?
-
[解決済み] Argument passed to call that takes no arguments "エラーを修正するには?
-
[解決済み] 新しい Swift クラスの void 関数で予期しない非 void の戻り値が発生する。
-
[解決済み] 警告 xcode 6 で暗黙の変換により整数の精度が失われる
-
[解決済み] Xcodeで実行ファイルが無効なエンタイトルメントで署名されてしまう
-
[解決済み] 脱獄したiphoneで`uicache`コマンドは何をするのですか?[クローズド]
-
[解決済み] Stringをformatで作成するには?
-
[解決済み] React native - connection has no connection handler エラーの意味?
-
[解決済み] BluetoothのロゴはiPhoneのキャラクターとして利用できますか?
-
[解決済み] なぜ「Implicitly Unwrapped Optionals」を作るのか、それは値があることを知っていることを意味しているからです。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】iOS 9.0より前のUIStackView
-
[解決済み] リンカーコマンドが終了コード 1 で失敗した(起動を確認するには -v を使用)、Xcode 8、Swift 3
-
[解決済み] Xcodeエラー "Could not find Developer Disk Image" が発生する。
-
[解決済み] "CFNetwork SSLHandshake failed (-9806)" の解決方法について
-
[解決済み] Xcode 9の問題を修正しました。"iPhoneはビジー状態です。iPhoneのデバッガーサポートを準備中"
-
[解決済み] 「シミュレータで実行すると、「インストールされているプロビジョニングプロファイルが、インストールされているiOS署名アイデンティティと一致しません。
-
[解決済み] 新しいアウトレット接続を挿入できませんでした。という名前のクラスの情報が見つかりませんでした。
-
[解決済み] Xcode 4のBundle creator OS Type code ?
-
[解決済み] 起動画面にカスタムクラス名が設定されない場合がある
-
[解決済み] HTTPの読み込みに失敗しました(エラーコード:-1200 [3:-9802])。