1

コアデータでデータを使用していて、NSNumberのNSSetを取得しています...私の質問は、すべてのオブジェクトをint値に簡単に変更するにはどうすればよいですか?または、データベースからint値を直接取得できますか?

ありがとう

4

3 に答える 3

7

NSSetなどintのプリミティブ値を格納できないため、NSNumberが使用されます。多くの場合NSNumber、キャストを行わずにそのまま使用できます。int 値が必要な場合は call [mynumber intValue].

于 2010-03-11T16:15:08.203 に答える
2

これはあなたの質問には答えませんが、関連しており、非常に便利です。

特定のタイプのオブジェクトのコレクション ( NSArrayNSSetなど) があり、これらのオブジェクトにはdisplayValue、オブジェクトをよりユーザーフレンドリーな表示形式に変換するメソッド/プロパティが呼び出されているとします。オブジェクトのコレクションをそれらの displayValues のコレクションに変換するには、次のことを行うだけです。

NSArray * objects = ...;
NSArray * objectDisplayValues = [objects valueForKey:@"displayValue"];

唯一の注意点は、がプリミティブ ( 、 、構造体など) をdisplayValue返す場合、適切なコンテナーにボックス化されることです。intfloatNSValue

したがって、理論的には次のことができます。

NSArray * numbers = ...;
NSArray * intValues = [numbers valueForKey:@"intValue"];

しかし、intValueは にボックス化されるためNSNumber、開始した場所にすぐに戻ることができます。

私が言ったように、これは正確な答えではありませんが、非常に便利です.

于 2010-03-11T16:24:00.013 に答える
1

NSSet はそのままにしておきます。

NSNumber の int 値を簡単に取得できます。

int intValue = [myNSNumber intValue];
于 2010-03-11T16:15:57.610 に答える