問題タブ [environmentobject]

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 に答える
567 参照

swift - SwiftUI は、presentationMode?.wrappedValue.dismiss() でランダムにクラッシュします。

クラッシュはこんな感じ

ここに画像の説明を入力

そのため、UIKit ラインでランダムにクラッシュします

デフォルトのSwiftUIナビゲーションスタックにViewがあります:

したがって、MyView をナビゲーション スタックに次のようにプッシュします。

そして、ユーザーが数秒後に MyView のボタンを押した後、hide()MyViewModel を呼び出します。ほぼ常に動作しますが、5 ~ 10% の場合にクラッシュします。

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

swift - SwiftUI EnvironmentObject を使用したプロパティ変更のサブスクライブ

ここに私のモデルがあります:

ChannelStore にリンクされた EnvironmentObject があり、すべて期待どおりに動作します。

問題は、プロパティのサムネイル画像が変更されたときにビューを更新する必要があることです。(ネットワーク呼び出しからのものであるため、呼び出しが返される前にビューが生成され、その間にストック画像が使用されます)。そのプロパティに Published プロパティ ラッパーを追加しようとしましたが、何もしませんでした。

私の見解では:@EnvironmentObject var channelStore: ChannelStore

EnvironmentObject によって管理されるプロパティの変更をサブスクライブする方法は?

編集

Channel クラスを構造体に変更することが提案されました。私がクラスを作成した唯一の理由は、「プロパティに割り当てることはできません: 'channel' は 'let' 定数です:

最終コメント

以下の回答を使用して問題全体を解決し、for ループを次のように変更することができました。

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

swift - 配列要素のSwiftUI NavigationLink @Bindingにより、致命的なエラーが発生します:インデックスが範囲外です

私は唯一の真実の情報源である観察可能なオブジェクトを持っています:

ここに車があります:

ここで、消去と追加 (リストを編集する関数) が機能し、すべて問題ありません。

問題はここにあります:

消去ボタンをクリックすると、メイン リストが空の配列に変わります。しかし、アプリがクラッシュし、次のエラーが発生します。

致命的なエラー:範囲外のインデックス: ファイル /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-1103.2.25.8/swift/stdlib/public/core/ContiguousArrayBuffer.swift、444 行目

質問は :

  1. なんで ?
  2. それを解決する方法は?

敬具