コアデータでデータを使用していて、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
返す場合、適切なコンテナーにボックス化されることです。int
float
NSValue
したがって、理論的には次のことができます。
NSArray * numbers = ...;
NSArray * intValues = [numbers valueForKey:@"intValue"];
しかし、intValue
は にボックス化されるためNSNumber
、開始した場所にすぐに戻ることができます。
私が言ったように、これは正確な答えではありませんが、非常に便利です.
NSSet はそのままにしておきます。
NSNumber の int 値を簡単に取得できます。
int intValue = [myNSNumber intValue];