在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"];