在 Core Data 中,我有许多属性声明为 Integer 64,然后通过 NSNumber 属性访问(这是默认情况)。
我通过以下方式存储和访问这些值是否重要:
NSNumber *mySetValue = [NSNumber numberWithInt:someIntValue];
[myObject setMyNumberProperty:mySetValue];
int myRetrievedValue = [myObject.myNumberProperty intValue];
or by
NSNumber *mySetValue = [NSNumber numberWithInteger:someIntegerValue];
[myObject setMyNumberProperty:mySetValue];
NSInteger myRetrievedValue = [myObject.myNumberProperty integerValue];
?
我想知道两种情况的答案:1)如果所需的值用于计算(它包含一个数量或将转换为货币的值),2)如果该值只是一个类型基本上只会与自身进行比较,不会用于任何计算。是否可以在一种情况下使用 numberWithInt 和 intValue 而不能在另一种情况下使用 numberWithInt 和 intValue,或者在两种情况下都必须使用 numberWithInteger 和 intValue?
另外,如果我之前将所有值存储为 [NSNumber numberWithInt:] 是否重要 - 我可以简单地更改现在存储/检索值的方式,还是需要保持一致性以免产生问题当前用户数据?
我对在 32 位和 64 位 iOS 应用程序中的工作特别感兴趣。
另外 - 如果核心数据值为整数 32、整数 16、整数 64 等,这会对你的答案产生影响吗?
你应该使用NSInteger
随时你可以。原因是它将是平台独立的。在 32 位架构上,NSInteger
将是一个int
,在 64 位上long
.
因此,您可以使用int
- 之前的方法 - 它是两者中较小的子集。
出于同样的原因,您存储在核心数据数据库中的内容也可以。将值设置为 Integer64 的事实确保了long
将来数字将被正确存储。
作为货币使用也可以,但有一些注意事项。如果您主要对美分感兴趣,而不是美分的分数,那么显然您可以将美分作为整数进行跟踪。但是,如果您想要进行更复杂的计算,可能涉及美分的小数部分,例如某些会计方法或货币换算,并存储这些结果你需要类似的东西float
或(更好)double
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)