問題タブ [fast-enumeration]
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.
ios - ARCの下でcountByEnumratingWithState内にオブジェクトを余分に安全に保存する方法は?
NSFastEnumerationState
の余分な配列にいくつかのオブジェクトインスタンスを安全に保存するにはどうすればよいですか?
ループの実行中はこれらのアイテムを保持し、ループが完了したら解放する必要があります。
NSFastEnumerationState
Apple のヘッダーからの , の定義は次のとおりです。
objective-c - NSMutableArray クラッシュでアイテムを削除するための高速列挙
奇妙な問題があります。forin 列挙でアイテムを削除すると、次のようにクラッシュします。
コードを次のように変更すると
これは完璧に機能します。誰かが理由を教えてもらえますか?
iphone - NSMutableArray 高速列挙の問題
初心者obj-cの質問です。
4 つのカスタム セルを含むカスタム テーブルビューがあります。すべてのセルには、顧客情報用の編集可能なテキスト フィールドがあります。入力アクセサリ ビューによるテキスト フィールド間の切り替えを改善する必要があります。 http://uaimage.com/image/62f08045
容量 4 の NSMutableArray を作成しました。テキスト フィールドにタグを付けて、テキスト フィールド デリゲート メソッドのこの配列に追加しました。
ここで、「次へ」ボタンの機能を改善しようとしています。
しかし、このコードは機能しません。高速列挙の使用に問題があると思いますか?
誰かがこれを手伝ってくれますか? ありがとう、アレックス。
c-had から解決するためのいくつかのアイデア:
- textFieldShouldReturn: で textFieldsArray を設定するのはなぜですか? これは、初期化が行われる場所 (ビュー コントローラーの viewDidLoad など) で行うべきではありませんか? 問題は、アレイが実際にはセットアップされていないか、部分的にしかセットアップされていないことです。また、セットアップをここに配置すると、何度も呼び出され、そのたびに配列が変更され、物事が台無しになります。
- タグが 1 つずれています。それらを 1 ではなく 0 から割り当てる必要があります (または、inputAccessoryViewDidSelectNext: の違いを説明します)。コードが機能していた場合、最初のフィールドがタグ 1 を返すため、2 つのテキスト フィールドをスキップし、3 番目のフィールドである objectAtIndex:2 にスキップします。
- あなたは終わりから外れることを説明していません。最後のフィールドにいる場合、インクリメントは最初に戻りません。
実際には、タグをまったく使用しないことをお勧めします。代わりに、セットアップ時に、フィールドをループして配列に順番に追加します。次に、inputAccessoryViewDidSelectNext: で、高速な列挙の代わりにカウンターを使用して、現在地を特定します。
cocoa - NSDictionaryオブジェクトを保持するNSDictionaryを使用した高速列挙
私はNSDictionary
4つのオブジェクトを持っています。各オブジェクトには、NSDictionary
何千ものオブジェクトが含まれています。トップレベルの辞書の説明をログに記録して、想定されている内容が含まれていることを確認しました。ただし、以下のコードを実行して、その最上位のディクショナリ内のオブジェクトを列挙すると、デバッガーにエラーが表示され、返されたオブジェクトがディクショナリではなくスティングであることを示します。
コードは次のとおりです。
(元々はと入力synsetsForPos
しましNSDictionary
たが、ここで説明する結果は同じです。)
デバッガーでは、logステートメントで停止して、コンソールでこれを取得します。
次に、logステートメントを実行すると、次のようになります。
このエラーメッセージが続きます:
ここで何が起こっているのか、なぜこれが高速列挙コードで辞書として扱われていないのかわかりません。
ios - iOSで、インデックスを知らなくてもオブジェクトがNSMutableArrayに存在するかどうかを確認し、存在する場合はそれを置き換えるにはどうすればよいですか?
NSMutableArray
Personタイプのオブジェクトを含むがあります。Personオブジェクトには、NSString
* name、NSString
* dateStamp、およびNSString
*testScoreのパラメーターが含まれています。高速列挙を使用して実行したいのは、NSMutableArray
* testResultsで確認し、同じ名前のパラメーターを持つオブジェクトが存在するかどうかを確認することです。
含まれている場合は、の既存のオブジェクトを、NSMutableArray
挿入しようとしているオブジェクトに置き換えます。このオブジェクトには、最新のdateStamp
testScore値が含まれます。名前パラメータが一致しないオブジェクトが見つかった場合は、私が持っているオブジェクトを挿入するだけです。
これまでの私のコードは次のようになります。
これは、挿入しようとしているオブジェクトを作成するコードです。
これは、NSMutableArrayを反復処理して、同じ名前のパラメーターを持つオブジェクトが既に存在するかどうかを確認するコードです。
それほど複雑な問題ではありませんが、一致するものを見つけて、オブジェクトがどのインデックスにあるかを事前に知らずに実際のオブジェクトを置き換える方法について混乱しています。
objective-c - NSMutableArrayの高速列挙を実行して、ビューにUILabelを動的に追加しようとしています
Personタイプのオブジェクトを含むNSMutableArrayがあります。Personオブジェクトには、NSString * name、NSString * dateStamp、およびNSString*testScoreのパラメーターが含まれています。高速列挙を使用して実行したいのは、各オブジェクトのパラメーターをビューの行にUILabelとして表示し、各オブジェクトを各行に表示することです。
問題は、NSMutableArrayが任意の数のオブジェクトを保持する可能性があるため、ビューに1行または2行のラベルが存在するか、ビューに複数の行が存在する可能性があることです。ビューに各オブジェクトを動的に配置する(そして一定の間隔で配置する)forループを作成し、ユーザーが下にスクロールして、さらに下にあり、最初は画面に表示されない行を表示できるようにします。 。
私のforループは次のようになります。
私がする必要があるのは、CGRectMakeフィールドの「y」値を動的に調整して、NSMutableArrayが繰り返されるときに各オブジェクトが別の行で順番に下に移動し、ユーザーが下にスクロールして追加の行をさらに表示できるようにすることです。必要。スクロール機能は自動的に追加されますか?
ios - iOS での高速列挙中にデータがプリロードされている NSMutableArray を変更する必要がある
オブジェクトのリストを保持している NSMutableArray があります。私がやろうとしているのは、このオブジェクトのリストを繰り返し処理し、挿入しようとしているオブジェクトに一致するオブジェクトを見つけることです。一致するオブジェクトが見つかったら、現在リストにあるオブジェクトを挿入しようとしているオブジェクトに単純に置き換えます。高速列挙を使用してこれを実行しようとしています:
残念ながら、上記のコードを実行すると、次のエラーが発生します。
誰が私が間違っているのか、どうすればこれを回避できますか?それでも、上記の機能を実現できますか?
ios - iOS で NSString パラメータを使用してオブジェクトの NSMutableArray を反復処理した後、サーバーにアップロードする JSON ドキュメントを生成する必要がある
オブジェクトのコレクションを保持する NSMutableArray があり、各オブジェクトには NSString 型の 3 つのパラメーターがあります。私がする必要があるのは、このコレクションを繰り返し処理し、2 つのサブセクションを持つ単一の JSON ドキュメントを作成することです。1 つは「テスト結果」と呼ばれ、もう 1 つは「レポート」と呼ばれます。NSMutable 配列の各オブジェクトには 3 つの NSString パラメータがあり、これらのパラメータの 1 つは「testResult」と呼ばれます。
「testResult」の値が「pass」または「fail」の場合、そのオブジェクトは「Test Result」セクションに入る必要があります。パラメータの値が「na」の場合、オブジェクトは「Reports」セクションに入ります。「テスト結果」セクションには、「名前」、「日付」、「テスト結果」の 3 つの「要素」が必要です。"Reports" セクションには、"Name" と "Date" の 2 つの要素のみが必要です。私の問題は、for ループを使用して NSMutableArray を反復処理する方法ではなく、NSMutableArray を反復処理し、上記で説明したように JSON ドキュメントを作成する方法です。
私のコードは次のようになります。
ios - iOSのNSMutableDictionaryに挿入されたオブジェクトと同じ順序で生成されるJSONドキュメントが必要です
NSStringsを指すキーと他のNSMutableDictionaryを指す2つのキーで構成されるNSMutableDictionaryからJSONドキュメントを生成しています。私の問題は、JSONドキュメントを出力すると、JSONドキュメントにNSMutableDictionaryに挿入したオブジェクトが異なる順序で含まれていることに気付くということです。たとえば、現在の出力は次のようになります。
しかし、私は出力を次のようにしたいと思います。
JSONドキュメントを作成するコードは次のようになります。
私の他の懸念は、test_resultsの出力も私が望む順序で出てこないことです。それらは「日付」、「名前」、「結果」の順序で出てきます。出力を「名前」、「日付」、「結果」にします。この注文も修正する方法はありますか?
ios - 高速な列挙と NSMutableArray へのオブジェクトの追加
オブジェクトを追加しようとしていますNSMutableArray "allItems1"
[[PMGWineStore sharedStore]allItems]
NSLog
最初のステートメントで完全に出力される 15 個のオブジェクトで構成されます。しかし[allItems1 count]
、0が表示されます。何が間違っていますか?