在iOS Core Data中存储高精度纬度/经度数 [英] Storing high precision latitude/longitude numbers in iOS Core Data
问题描述
我正在尝试将纬度/经度存储在核心数据中。这些最终会达到6-20位精度。
I'm trying to store Latitude/Longitudes in core data. These end up being anywhere from 6-20 digit precision.
无论出于何种原因,我将它们作为Core Data中的浮点数,它将它们四舍五入并且没有给我准确的价值回来了。我试过十进制类型,也没有运气。
And for whatever reason, i had them as floats in Core Data, its rounding them and not giving me the exact values back. I tried "decimal" type, with no luck either.
NSStrings是我唯一的另一种选择吗?
Are NSStrings my only other option?
编辑
NSManagedObject:
NSManagedObject:
@interface Event : NSManagedObject
{
}
@property (nonatomic, retain) NSDecimalNumber * dec;
@property (nonatomic, retain) NSDate * timeStamp;
@property (nonatomic, retain) NSNumber * flo;
@property (nonatomic, retain) NSNumber * doub;
以下是我存储到核心数据中的样本编号的代码:
Here's the code for a sample number that I store into core data:
NSNumber *n = [NSDecimalNumber decimalNumberWithString:@"-97.12345678901234567890123456789"];
打印上述值。甜,值I预期:
The above value printed. Sweet, value I expected:
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包装器?
Have you used the NSNumber wrapper?
将商店配置为使用NSNumber而不是float或decimal,并使用它来保存坐标:
Configure your store to use NSNumber, instead of float or decimal, and use this to save the coordinates:
[NSNumber numberWithDouble:coordinate.latitude]
//Same for longitude.
这篇关于在iOS Core Data中存储高精度纬度/经度数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!