在NSManagedObject上设置double属性的值

时间:2012-03-27 08:50:49

标签: iphone objective-c ios core-data

我正在尝试在我的应用程序上实现地图功能。但是我想将纬度和经度从存储在核心数据中的对象传递到地图中。但是,当我启动应用程序时,我在设置对象的初始值时遇到问题。到目前为止,我已经尝试了两种不同的方法,每次收到的错误都是“将'发送'到一个不兼容类型'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"];

3 个答案:

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