gpt4 book ai didi

ios - 核心数据、NSNumber、整数 32 和整数 64

转载 作者:可可西里 更新时间:2023-11-01 05:12:56 24 4
gpt4 key购买 nike

在 Core Data 中,我有许多属性声明为 Integer 64,然后通过 NSNumber 属性访问(这是默认情况)。

如果我通过以下方式存储和访问这些值是否重要:

NSNumber *mySetValue = [NSNumber numberWithInt:someIntValue];
[myObject setMyNumberProperty:mySetValue];

int myRetrievedValue = [myObject.myNumberProperty intValue];

或通过

NSNumber *mySetValue = [NSNumber numberWithInteger:someIntegerValue];
[myObject setMyNumberProperty:mySetValue];

NSInteger myRetrievedValue = [myObject.myNumberProperty integerValue];

?

有两种情况我想知道答案:1)如果需要的值用于计算(它包含一个数量或将转换为货币的值)和 2)如果该值只是一种基本上只会与自身进行比较并且不会用于任何计算的类型。是否可以在一种情况下使用 numberWithInt 和 intValue 而在另一种情况下都可以,还是必须在两种情况下都使用 numberWithInteger 和 integerValue?

此外,如果我之前将所有值存储为 [NSNumber numberWithInt:] 是否重要 - 我现在可以简单地更改存储/检索值的方式,还是我需要保持一致性以免创建当前用户数据有问题?

我对在 32 位和 64 位 iOS 应用程序中工作特别感兴趣。

此外 - 如果 Core Data 值为 Integer 32、Integer 16、Integer 64 等,这对您的答案有影响吗?

最佳答案

您应该尽可能使用 NSInteger。原因是它将独立于平台。在 32 位架构上,NSInteger 将是一个 int,在 64 位架构上是一个 long

因此,您之前使用过 int 方法是可以的 - 它是两者中较小的子集。

出于同样的原因,您存储在 Core Data 数据库中的内容也是可以的。事实上,您将值设置为 Integer64 可确保 long 数字将来也能正确存储。

作为货币使用也是可以的,但有一些注意事项。如果您主要对美分感兴趣,而不是美分的分数,您显然可以将美分作为整数进行跟踪。但是,如果您想进行更复杂的计算,可能涉及小数点,例如某些会计方法或货币换算,并存储这些结果,您需要类似float 的东西> 或(更好)double

关于ios - 核心数据、NSNumber、整数 32 和整数 64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19765809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com