简体   繁体   English

将 NSInteger 存储在 Core Data 中

[英]Store NSInteger in Core Data

Is there any way I can skip dealing with NSNumber and work directly with NSInteger?有什么方法可以跳过处理 NSNumber 并直接使用 NSInteger 吗?

Core Data will only allow NSNumbers. Core Data 将只允许 NSNumbers。 However, you can write custom getters and setters to use NSInteger properties.但是,您可以编写自定义 getter 和 setter 来使用 NSInteger 属性。 mogenerator is a wonderful tool that does that automatically for you: it generates classes with native properties for all your entities. mogenerator是一个非常棒的工具,它可以自动为您执行此操作:它为您的所有实体生成具有本机属性的类。

No. NSInteger is just a typedef for a long integer, not an object.NSInteger只是长 integer 的 typedef,而不是 object。

Actual implementation:实际实现:

#if __LP64__ || NS_BUILD_32_LIKE_64
  typedef long NSInteger;
  typedef unsigned long NSUInteger;
#else
  typedef int NSInteger;
  typedef unsigned int NSUInteger;
#endif

The NSNumber class allows the encapsulation of primitive types ( int , float , etc.) into an object, which can then be stored into Property Lists and Core Data. NSNumber class 允许将原始类型( intfloat等)封装到 object 中,然后可以将其存储到属性列表和核心数据中。

Example:例子:

float pi = 3.1415;
NSNumber *piNumber = [NSNumber numberWithFloat:pi];

You can then easily access and/or transform the value stored into the NSNumber object:然后,您可以轻松访问和/或转换存储到NSNumber object 中的值:

int piAsInteger = [piNumber intValue];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM