首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将NSNumber的NSSet更改为int的NSSet

将NSNumber的NSSet更改为int的NSSet
EN

Stack Overflow用户
提问于 2010-03-12 00:11:58
回答 3查看 2.6K关注 0票数 1

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

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-12 00:15:08

NSSet不能存储像int这样的原始值,这就是使用NSNumber的原因。通常,您可以只使用NSNumber而不进行任何类型转换。如果确实需要int值,则调用[mynumber intValue]

票数 7
EN

Stack Overflow用户

发布于 2010-03-12 00:24:00

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

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

代码语言:javascript
复制
NSArray * objects = ...;
NSArray * objectDisplayValues = [objects valueForKey:@"displayValue"];

唯一需要注意的是,如果displayValue返回一个原语(intfloat、结构等),它将被装箱到适当的NSValue容器中。

所以理论上你可以这样做:

代码语言:javascript
复制
NSArray * numbers = ...;
NSArray * intValues = [numbers valueForKey:@"intValue"];

但是,由于intValue将被装箱到NSNumber中,因此您将回到开始的位置。

正如我所说,这不是一个确切的答案,但它是非常有用的。

票数 2
EN

Stack Overflow用户

发布于 2010-03-12 00:15:58

保持NSSet的原样。

您可以很容易地获得NSNumber的int值。

代码语言:javascript
复制
int intValue = [myNSNumber intValue];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2426598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档