我正在尝试在我的应用程序上实现地图功能。但是我想将纬度和经度从存储在核心数据中的对象传递到地图中。但是,当我启动应用程序时,我在设置对象的初始值时遇到问题。到目前为止,我已经尝试了两种不同的方法,每次收到的错误都是“将'发送'到一个不兼容类型'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"];
答案 0 :(得分:12)
NSManagedObject
属性需要是对象,但double
是原始C类型。解决方案是将双打包装在NSNumber
:
[room setValue:[NSNumber numberWithDouble:myLongitude] forKey:@"longitude"];
[room setValue:[NSNumber numberWithDouble:myLatitude] forKey:@"latitude"];
答案 1 :(得分:2)
你应该将你的双重包装为NSNumber:
[NSNumber numberWithDouble:myDouble]
NSManagedObject setValue:forKey:需要id为其值。双重是原始的。
答案 2 :(得分:0)
This answer告诉您如何在Core Data中存储浮动。这是双重
[room setValue:[NSNumber numberWithDouble:myLatitude] forKey:@"latitude"];