我试着把纬度/经度存储在核心数据中。这些数字的精度在6-20位之间。
不管出于什么原因,我把它们作为浮动在核心数据中,它使它们四舍五入,而不给我确切的值。我试过“十进制”类型,也没有运气。
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"];上面打印的值。甜蜜,我期待的价值:
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}发布于 2011-01-03 14:47:06
你用过NSNumber包装器吗?
将您的存储配置为使用NSNumber,而不是浮点数或十进制,并使用它保存坐标:
[NSNumber numberWithDouble:coordinate.latitude]
//Same for longitude.发布于 2012-03-09 02:54:35
尝试在Core数据中使用双重数据类型。因为您的位置坐标是双倍的,所以在Core数据中使用相同的坐标是有意义的。虽然现在还可以使用(iOS 5)。
发布于 2013-02-02 06:18:12
当核心数据在SQLite中存储数据时,它使用数字列。SQLite存储数字 as-最多是8字节值,无论是整数还是浮点数.因此,虽然NSDecimalNumber很乐意准确地表示这些坐标值,但通过SQLite支持的核心数据十进制属性进行往返操作将对它们进行处理。
https://stackoverflow.com/questions/4585331
复制相似问题