You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS/Objective-C:能否在CoreData中以NSNumber类型存储小数?

关于CoreData中NSNumber属性存储小数用于排序的问题

当然可以这么做!这是完全可行的方案,不过有个关键细节需要注意,我给你拆解一下:

  • 先检查CoreData数据模型的属性配置
    如果你的这个NSNumber属性在数据模型里设置的是整数类型(比如Integer 16/32/64),那直接存带小数的NSNumber会被自动截断成整数,比如1.5会变成1,这样就达不到插入中间值的目的了。你需要把模型里的属性类型改成Double、Float或者Decimal(根据你需要的精度选择),这样CoreData就能正确存储带小数的数值了。

  • 代码层面无阻碍
    NSNumber本身就是用来包装各种数值类型的容器,不管是整数还是浮点数都能存。你创建新的托管对象时,直接给这个属性赋值NSNumber(value: 1.5)就可以,完全不需要额外处理。

  • 排序效果符合预期
    当你基于这个属性做排序查询时,CoreData会按照数值的实际大小来排序,1 < 1.5 < 2的顺序完全能得到保证,插入的对象会正确排在两个原有对象之间。

另外补充个小提示:如果已经有现存的整数数据,修改属性类型后,这些整数会自动转为对应的浮点数(比如1变成1.0),既不会丢失数据,也不会影响后续的排序逻辑。

内容的提问来源于stack exchange,提问作者user6631314

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:42:44