2012-03-27 42 views
4

我试图在我的应用程序上实现地图功能。但是,我希望将经纬度从存储在核心数据中的对象传递到地图中。不过,我在启动应用程序时遇到了在对象上设置初始值的问题。到目前为止,我已经尝试了两种不同的方式,我收到每错误“发送“双到不兼容类型的参数‘身份证’。任何帮助将是非常赞赏。在NSManagedObject上设置双重属性的值

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

回答

12

NSManagedObject属性必须是对象,但double是一个原始C类的解决方法是。将双打包装在0中:

[room setValue:[NSNumber numberWithDouble:myLongitude] forKey:@"longitude"]; 
[room setValue:[NSNumber numberWithDouble:myLatitude] forKey:@"latitude"]; 
+0

非常感谢,我知道这是沿着他们的线,但不知道如何设置它使用双。 – dmeads89 2012-03-27 09:06:31

2

你应该换你兼作的NSNumber:

[NSNumber numberWithDouble:myDouble] 

NSManagedObject的setValue:forKey:需要一个id为它的值的两倍是一个原始

0

This answer告诉你如何存储核心数据的浮动。这里是双重的

[room setValue:[NSNumber numberWithDouble:myLatitude] forKey:@"latitude"];