在iOS Core Data中存储高精度纬度/经度数 [英] Storing high precision latitude/longitude numbers in iOS Core Data

查看:138
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆