将NSNumber的NSSet更改为int的NSSet

时间:2010-03-11 16:11:58

标签: iphone objective-c database core-data nsset

我正在使用核心数据的数据并获得NSNumber的NSSet ...我的问题是如何将所有对象轻松更改为int值?或者我可以直接从数据库中获取int值吗?

由于

3 个答案:

答案 0 :(得分:7)

NSSet无法存储原始值,例如int,这就是使用NSNumber的原因。通常你可以在不进行任何投射的情况下使用NSNumber。如果确实需要int值调用[mynumber intValue]

答案 1 :(得分:2)

这不能回答你的问题,但它是相关的,而且非常有用。

假设我有一个特定类型对象的集合(NSArrayNSSet等),这些对象有一个名为displayValue的方法/属性,它以某种方式转换对象进入更加用户友好的显示格式。要将我的对象集合转换为其displayValues的集合,我只需要这样做:

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

唯一需要注意的是,如果displayValue返回基元(intfloat,结构等),它将被装入相应的NSValue容器中。

理论上你可以做到:

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

但是,由于intValue会被装入NSNumber,所以你就会回到原来的位置。

正如我所说,这不是一个答案,但它已经无用了。

答案 2 :(得分:1)

保持NSSet不变。

您可以轻松获取NSNumber的int值。

int intValue = [myNSNumber intValue];