コアデータでデータを使用していて、NSNumberのNSSetを取得しています...私の質問は、すべてのオブジェクトをint値に簡単に変更するにはどうすればよいですか?または、データベースからint値を直接取得できますか?
ありがとう
コアデータでデータを使用していて、NSNumberのNSSetを取得しています...私の質問は、すべてのオブジェクトをint値に簡単に変更するにはどうすればよいですか?または、データベースからint値を直接取得できますか?
ありがとう
NSSetなどintのプリミティブ値を格納できないため、NSNumberが使用されます。多くの場合NSNumber、キャストを行わずにそのまま使用できます。int 値が必要な場合は call [mynumber intValue].
これはあなたの質問には答えませんが、関連しており、非常に便利です。
特定のタイプのオブジェクトのコレクション ( NSArray、NSSetなど) があり、これらのオブジェクトにはdisplayValue、オブジェクトをよりユーザーフレンドリーな表示形式に変換するメソッド/プロパティが呼び出されているとします。オブジェクトのコレクションをそれらの displayValues のコレクションに変換するには、次のことを行うだけです。
NSArray * objects = ...;
NSArray * objectDisplayValues = [objects valueForKey:@"displayValue"];
唯一の注意点は、がプリミティブ ( 、 、構造体など) をdisplayValue返す場合、適切なコンテナーにボックス化されることです。intfloatNSValue
したがって、理論的には次のことができます。
NSArray * numbers = ...;
NSArray * intValues = [numbers valueForKey:@"intValue"];
しかし、intValueは にボックス化されるためNSNumber、開始した場所にすぐに戻ることができます。
私が言ったように、これは正確な答えではありませんが、非常に便利です.
NSSet はそのままにしておきます。
NSNumber の int 値を簡単に取得できます。
int intValue = [myNSNumber intValue];