我正在尝试将纬度/经度存储在核心数据中。这些最终达到 6-20 位精度。
无论出于何种原因,我将它们作为 Core Data 中的 float ,将它们四舍五入,但没有给我返回确切的值。我试过“十进制”类型,也没有运气。
NSStrings 是我唯一的选择吗?
编辑
NSManagedObject:
@interface Event : NSManagedObject
{
}
@property (nonatomic, retain) NSDecimalNumber * dec;
@property (nonatomic, retain) NSDate * timeStamp;
@property (nonatomic, retain) NSNumber * flo;
@property (nonatomic, retain) NSNumber * doub;
这是我存储到核心数据中的样本编号的代码:
NSNumber *n = [NSDecimalNumber decimalNumberWithString:@"-97.12345678901234567890123456789"];
上面的值打印出来。甜蜜,我期待的值(value):
Printing description of n:
-97.12345678901234567890123456789
再次访问的代码:
NSNumber *n = [managedObject valueForKey:@"dec"];
NSNumber *f = [managedObject valueForKey:@"flo"];
NSNumber *d = [managedObject valueForKey:@"doub"];
打印值:
Printing description of n:
-97.1234567890124
Printing description of f:
<CFNumber 0x603f250 [0xfef3e0]>{value = -97.12345678901235146441, type = kCFNumberFloat64Type}
Printing description of d:
<CFNumber 0x6040310 [0xfef3e0]>{value = -97.12345678901235146441, type = kCFNumberFloat64Type}
最佳答案
你用过 NSNumber 包装器吗?
将您的商店配置为使用 NSNumber,而不是 float 或小数,并使用它来保存坐标:
[NSNumber numberWithDouble:coordinate.latitude]
//Same for longitude.
关于iphone - 在 iOS 核心数据中存储高精度纬度/经度数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4585331/