1

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

谢谢

4

3 回答 3

7

NSSet不能存储原始值,例如int,这NSNumber就是使用的原因。通常你可以直接使用NSNumber而不做任何铸造。如果您确实需要 int 值调用[mynumber intValue]

于 2010-03-11T16:15:08.203 回答
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,你会回到你开始的地方。

正如我所说,这并不完全是一个答案,但它非常有用。

于 2010-03-11T16:24:00.013 回答
1

保持 NSSet 原样。

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

int intValue = [myNSNumber intValue];
于 2010-03-11T16:15:57.610 回答