在NSManagedObject上设置一个double属性的值
我正在尝试在我的应用程序上实现地图function。 但是,我希望将经纬度从存储在核心数据中的对象传递到地图中。 但是我有问题,当我启动我的应用程序时,在对象上设置初始值。 到目前为止,我已经尝试了两种不同的方法,每个和我收到的错误是“发送”双重不兼容的types“id”的参数。任何帮助将非常感激。
NSManagedObject *room = [NSEntityDescription insertNewObjectForEntityForName:@"Room" inManagedObjectContext:context]; double myLatitude = -1.228087; double myLongitude = 52.764397; [room setValue:@"H001" forKey:@"code"]; [room setValue:@"This is a description" forKey:@"roomDescription"]; [room setValue:myLatitude forKey:@"longitude"]; [room setValue:myLatitude forKey:@"latitude"];
NSManagedObject
属性需要是对象,但double
是原始的Ctypes。 解决方法是将双打包装在一个NSNumber
:
[room setValue:[NSNumber numberWithDouble:myLongitude] forKey:@"longitude"]; [room setValue:[NSNumber numberWithDouble:myLatitude] forKey:@"latitude"];
你应该把你的double换成NSNumber:
[NSNumber numberWithDouble:myDouble]
NSManagedObject setValue:forKey:需要一个id作为它的值。 双是一个原始的。
这个答案告诉你如何在核心数据中存储一个浮点数。 这里是双倍的
[room setValue:[NSNumber numberWithDouble:myLatitude] forKey:@"latitude"];