問題タブ [nsmutableset]

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 投票する
2 に答える
1527 参照

ios - SwiftでNSSetをNSMutableSetにキャストする方法

アプリで Core Data を使用しており、2 つのエンティティ間の多対多の関係を扱っています。私の目標は、テーブルビューを使用してユーザーにセルを選択させることにより、あるエンティティのどれを別のエンティティに関連付けるかをユーザーに選択させることです。

エンティティのクラスが作成されると、「リスト」は NSSet 型として設定されます。これは、順序付けする必要がないため理にかなっています。また、そこに他のエンティティを 1 つしか入れたくないのです。

私の問題は、アイテムを NSSet に追加したいときに発生します。私が知る限り、NSMutableSet を使用しないと実行できません。次に、 と をaddObject得るremoveObject。NSMutableSet を初期化して「Lists」NSSet が現在持っているすべてのものを持つ部分を除いて、すべてを機能させることができます。私が試したことはすべて、常に失敗してビルドされないか、予期せず nil が返されてエラーが発生することを示しています。

では、NSSet の内容を正しく変更する方法、または少なくとも NSSet を NSMutableSet にキャストし、完了したらその NSMutableSet を NSSet にキャストする方法はありますか?

必要に応じてコードを追加できますが、かなりうまく説明できたと思います。お知らせいただければ、必要な詳細を追加します。

前もって感謝します。

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

objective-c - *[NSMutableSet addObject: X]* はオブジェクト X を追加しますが、*[Y isEqual:X]* はすでにセット内にあるオブジェクト Y に対して TRUE を返します。

FactorHelper定義が以下のように呼ばれる目的の C クラスがあります。の である factor と呼ばれるプロパティがありNSMutableArrayますNSNumbersisEqual:このクラスには、2 つのオブジェクトの factor プロパティFactorHelperの数値が同じ場合 (数値の順序が異なっていても)、 true を返すカスタムメソッドがあります。

10,5,2と10,2,5 の 2 つのFactorHelperオブジェクトを作成してテストしようとしました。次に を作成し、firstObject を追加してから 2 番目のオブジェクトを追加しました。2 番目のオブジェクトが追加されないことを期待していましたが、追加されていることがわかります。コードをステップ実行すると、 addObject によって呼び出され、 が返されていることがわかります。私は何を間違っていますか?NSMutableSetisEqualTRUE

アップデート

を変更する[NSMutableSet new][NSMutableSet alloc] init]、期待どおりに機能します。

また、TRUE、FALSE をすべて YES、NO に変更すると、正しく動作します (そのままにしておいても[NSMutableSet new])。

何が起こっているのかわかりません。誰かが光を当てることができますか?!

クラス定義

単体テスト コード

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

ios - NSObject クラスから配列を作成する

3 つのプロパティを保持する NSObject クラス呼び出し Details があります。

そして、このクラスのインペンデントは

別のクラス呼び出し Request Class で、Details クラスのプロパティ (画像、数値、詳細) を保持する配列を作成したいと考えています。

しかし、このクラスのプロパティを配列として持つことはできません...ここで何が欠けていますか? どんな助けでも完璧です!ありがとう