我正在将数据与核心数据一起使用,并获取NSNumber的NSSet ...我的问题是,如何才能轻松地将所有对象更改为int值?或者我可以直接从数据库中获取int值?
谢谢
发布于 2010-03-12 00:15:08
NSSet不能存储像int这样的原始值,这就是使用NSNumber的原因。通常,您可以只使用NSNumber而不进行任何类型转换。如果确实需要int值,则调用[mynumber intValue]。
发布于 2010-03-12 00:24:00
这并没有回答你的问题,但它是相关的,而且非常有用。
假设我有一个特定类型的对象的集合(NSArray、NSSet等),这些对象有一个名为displayValue的方法/属性,该方法/属性以某种方式将对象转换为更友好的显示格式。要将我的对象集合转换为它们的displayValues的集合,我只需要做:
NSArray * objects = ...;
NSArray * objectDisplayValues = [objects valueForKey:@"displayValue"];唯一需要注意的是,如果displayValue返回一个原语(int、float、结构等),它将被装箱到适当的NSValue容器中。
所以理论上你可以这样做:
NSArray * numbers = ...;
NSArray * intValues = [numbers valueForKey:@"intValue"];但是,由于intValue将被装箱到NSNumber中,因此您将回到开始的位置。
正如我所说,这不是一个确切的答案,但它是非常有用的。
发布于 2010-03-12 00:15:58
保持NSSet的原样。
您可以很容易地获得NSNumber的int值。
int intValue = [myNSNumber intValue];https://stackoverflow.com/questions/2426598
复制相似问题