我正在使用核心数据的数据并获得NSNumber的NSSet ...我的问题是如何将所有对象轻松更改为int值?或者我可以直接从数据库中获取int值吗?
由于
答案 0 :(得分:7)
NSSet
无法存储原始值,例如int
,这就是使用NSNumber
的原因。通常你可以在不进行任何投射的情况下使用NSNumber
。如果确实需要int值调用[mynumber intValue]
。
答案 1 :(得分:2)
这不能回答你的问题,但它是相关的,而且非常有用。
假设我有一个特定类型对象的集合(NSArray
,NSSet
等),这些对象有一个名为displayValue
的方法/属性,它以某种方式转换对象进入更加用户友好的显示格式。要将我的对象集合转换为其displayValues的集合,我只需要这样做:
NSArray * objects = ...;
NSArray * objectDisplayValues = [objects valueForKey:@"displayValue"];
唯一需要注意的是,如果displayValue
返回基元(int
,float
,结构等),它将被装入相应的NSValue
容器中。
理论上你可以做到:
NSArray * numbers = ...;
NSArray * intValues = [numbers valueForKey:@"intValue"];
但是,由于intValue
会被装入NSNumber
,所以你就会回到原来的位置。
正如我所说,这不是一个答案,但它已经无用了。
答案 2 :(得分:1)
保持NSSet不变。
您可以轻松获取NSNumber的int值。
int intValue = [myNSNumber intValue];