Xcodeデバッガーでインスタンス化されたオプション変数がnilと表示される

ディラン:

Xcode 11とSwift 5.1にアップグレードしてから、奇妙な問題が発生しました。オプションの変数がインスタンス化された後も、Xcodeデバッガーでnilとして表示される可能性があります。

私は呼ばれるオプションのクラス変数を持っていますbooking

var booking: Booking?

タイプはBooking次のとおりです。

public struct Booking: Codable {
    var id: Int?
    var start_time: Date?
    var payment_currency: String = "USD"
    var payment_amount: Int?
}

コードをステップ実行しているときに、コードがbooking割り当てられる前に確認できます...それはnilです、素晴らしい:

ここに画像の説明を入力してください

それが割り当てられた後...何、まだnil ??:

ここに画像の説明を入力してください

どういうわけか怠惰な変数のように扱われていたのではないかと思いました。ただし、アクセスできるため、実際にはnilではありません。

ここに画像の説明を入力してください

After searching for a while, I wondered if my build schema in Xcode didn't have its "Debug executable" flag set. But it does. I even cleaned and rebuilt the project with the flag off and on to be sure.

ここに画像の説明を入力してください

Whether I view booking in the Variables View or enter p booking in the Console View, it shows up as nil.

What's going on here? I need the predictability of debugging I had before this upgrade.

UPDATE

I distilled a simple way to reproduce the issue. First, create an empty single-view project and add this to the top of AppDelegate.swift:

public struct Booking: Codable {
    var start_time: Date?
    var payment_currency: String = "USD"
}

Then add these lines to the application(_:didFinishLaunchingWithOptions:) func:

booking = Booking()
print("booking.payment_currency = \(booking?.payment_currency ?? "NULL")")

Set a breakpoint as before and when running, notice that the debugger shows booking as nil even after being assigned, as in my original case.

Then comment out the start_time variable, re-run, and notice that now the debugger shows booking having a value after being assigned, as one would expect.

So it seems that Date variables, optional or not, in a struct like this make debugging confusing. Specifically Date variables -- change the variable to other types like Int, Int?, String, String?... and there's no issue.

Unless I'm missing something very basic, this seems like a bug in the Xcode debugger to me. If so, would the best way to report it be at https://developer.apple.com/bug-reporting/?

Dylan :

It appears I've found a bug in Xcode 11. It's easily reproducible as outlined in the UPDATE above. I've filed the bug with Apple.

Date変数を含むかなりの数の構造体を使用しているため、今でも回避策を探しています。誰かが見つけたら、下にコメントしてください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

手動で起動したIISExpressインスタンスにデバッガーをアタッチするときにシンボルが表示されない

分類Dev

オプションが選択されたときにイオン選択に表示されるイオン変化テキスト

分類Dev

.net アプリケーションでインスタンス化されたオブジェクトを表示する必要がある

分類Dev

コンストラクターまたはinitブロックから呼び出されたオーバーライドされた抽象関数で変数を初期化するときに変数が正しく初期化されない

分類Dev

Windows 10 の「インターネット オプション」で「使用するディスク容量」を変更しようとすると、「8 ~ 8 の値を選択してください」というメッセージが表示される

分類Dev

IOSデバイスでアニメーション化するときに、2つのアニメーション化された要素が互いに重なり合って変化しますか(zインデックスの位置)?

分類Dev

小さなウィンドウまたはモバイルデバイスで表示すると、Bootstrap固定トップナビゲーションバーにすべてのドロップダウンアイテムが表示されません

分類Dev

コンボボックスで選択されたオプションを、コンボボックスで選択されたオプションとして変化する変数として設定する

分類Dev

アプリケーションがモバイルまたはポータブルデバイスで表示されるときに著作権フッターセンターを調整する方法

分類Dev

WPF MVVMアプリケーションでマテリアルデザインを追加すると、データグリッドにスクロールバーが表示されず、デザインが廃止されます

分類Dev

IBOutlet変数にアクセスしようとすると、nilが返されます。エラー:スレッド1:致命的なエラー:オプション値のアンラップ中に予期せずnilが見つかりました

分類Dev

正当化されたナビゲーションバーとブートストラップによるインラインブロックの表示

分類Dev

Angular Javascriptコードのデバッグ、batarangデバッガーのモデルオプションにスコープが表示されない

分類Dev

アプリケーションがオフラインで起動されたときのデータベースレプリケーション

分類Dev

通知によってトリガーされた、ラベルのテキストを変更しようとしたときに、オプションの値をアンラップしているときに予期せずnilが見つかりました

分類Dev

AndroidStudioに表示されないデバイスオプション

分類Dev

オプションメニューが開いているときにデバイスの向きが変わると「ウィンドウエラーが発生しました」という警告が表示されます(API 23、24、25)

分類Dev

オプションが変更されたときにTinyMCEインスタンスを更新するにはどうすればよいですか?

分類Dev

(未定義のインデックス: ドライバー) Laravel アプリケーションでデータベース クエリを実行しようとすると、なぜこのエラー メッセージが表示されるのですか?

分類Dev

PrimeNGドロップダウンで選択されたオプションは、インターフェイスプロパティにバインドされるとリセットされます

分類Dev

Androidデバイスでタイムゾーンが変更された場合にポップアップを表示する

分類Dev

C ++でオーバーロードされたテンプレート関数のインスタンス化に失敗するSFINAEベースのシリアル化ソリューション

分類Dev

コンバーターがトリガーされていない状態でインデックスを表示

分類Dev

Ubuntu20.04にデスクトップ環境を変更するためのログインオプションが表示されない

分類Dev

サイズインスペクターがXcodeで機能しない:表示されるオプションはありません

分類Dev

ボタンでポップオーバーした後、xcodeナビゲーションバーが表示されなくなります

分類Dev

キャンバスでシェイプをアニメーション化しようとすると、表示されますが移動しません

分類Dev

オリエンテーションがロックされているときにデバイスのオリエンテーションを追跡する

分類Dev

Highchartでグループ化されたオプションプラグインのスタイルを変更する

Related 関連記事

  1. 1

    手動で起動したIISExpressインスタンスにデバッガーをアタッチするときにシンボルが表示されない

  2. 2

    オプションが選択されたときにイオン選択に表示されるイオン変化テキスト

  3. 3

    .net アプリケーションでインスタンス化されたオブジェクトを表示する必要がある

  4. 4

    コンストラクターまたはinitブロックから呼び出されたオーバーライドされた抽象関数で変数を初期化するときに変数が正しく初期化されない

  5. 5

    Windows 10 の「インターネット オプション」で「使用するディスク容量」を変更しようとすると、「8 ~ 8 の値を選択してください」というメッセージが表示される

  6. 6

    IOSデバイスでアニメーション化するときに、2つのアニメーション化された要素が互いに重なり合って変化しますか(zインデックスの位置)?

  7. 7

    小さなウィンドウまたはモバイルデバイスで表示すると、Bootstrap固定トップナビゲーションバーにすべてのドロップダウンアイテムが表示されません

  8. 8

    コンボボックスで選択されたオプションを、コンボボックスで選択されたオプションとして変化する変数として設定する

  9. 9

    アプリケーションがモバイルまたはポータブルデバイスで表示されるときに著作権フッターセンターを調整する方法

  10. 10

    WPF MVVMアプリケーションでマテリアルデザインを追加すると、データグリッドにスクロールバーが表示されず、デザインが廃止されます

  11. 11

    IBOutlet変数にアクセスしようとすると、nilが返されます。エラー:スレッド1:致命的なエラー:オプション値のアンラップ中に予期せずnilが見つかりました

  12. 12

    正当化されたナビゲーションバーとブートストラップによるインラインブロックの表示

  13. 13

    Angular Javascriptコードのデバッグ、batarangデバッガーのモデルオプションにスコープが表示されない

  14. 14

    アプリケーションがオフラインで起動されたときのデータベースレプリケーション

  15. 15

    通知によってトリガーされた、ラベルのテキストを変更しようとしたときに、オプションの値をアンラップしているときに予期せずnilが見つかりました

  16. 16

    AndroidStudioに表示されないデバイスオプション

  17. 17

    オプションメニューが開いているときにデバイスの向きが変わると「ウィンドウエラーが発生しました」という警告が表示されます(API 23、24、25)

  18. 18

    オプションが変更されたときにTinyMCEインスタンスを更新するにはどうすればよいですか?

  19. 19

    (未定義のインデックス: ドライバー) Laravel アプリケーションでデータベース クエリを実行しようとすると、なぜこのエラー メッセージが表示されるのですか?

  20. 20

    PrimeNGドロップダウンで選択されたオプションは、インターフェイスプロパティにバインドされるとリセットされます

  21. 21

    Androidデバイスでタイムゾーンが変更された場合にポップアップを表示する

  22. 22

    C ++でオーバーロードされたテンプレート関数のインスタンス化に失敗するSFINAEベースのシリアル化ソリューション

  23. 23

    コンバーターがトリガーされていない状態でインデックスを表示

  24. 24

    Ubuntu20.04にデスクトップ環境を変更するためのログインオプションが表示されない

  25. 25

    サイズインスペクターがXcodeで機能しない:表示されるオプションはありません

  26. 26

    ボタンでポップオーバーした後、xcodeナビゲーションバーが表示されなくなります

  27. 27

    キャンバスでシェイプをアニメーション化しようとすると、表示されますが移動しません

  28. 28

    オリエンテーションがロックされているときにデバイスのオリエンテーションを追跡する

  29. 29

    Highchartでグループ化されたオプションプラグインのスタイルを変更する

ホットタグ

アーカイブ