Установка значения двойного атрибута в NSManagedObject - PullRequest
4 голосов
/ 27 марта 2012

Я пытаюсь реализовать функцию карт в моем приложении.Однако мне бы хотелось, чтобы широта и долгота передавались на карту из объекта, который хранится в основных данных.Однако у меня возникают проблемы с установкой начального значения объекта при запуске приложения.До сих пор я пробовал 2 разных способа, и каждый раз я получаю сообщение об ошибке «Отправка» дважды параметру несовместимого типа «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 ]

12 голосов
/ 27 марта 2012

NSManagedObject атрибуты должны быть объектами, но double является примитивным типом C. Решение состоит в том, чтобы обернуть двойные в NSNumber:

[room setValue:[NSNumber numberWithDouble:myLongitude] forKey:@"longitude"];
[room setValue:[NSNumber numberWithDouble:myLatitude] forKey:@"latitude"];
2 голосов
/ 27 марта 2012

Вы должны обернуть ваш двойник как NSNumber:

[NSNumber numberWithDouble:myDouble]

NSManagedObject setValue: forKey: требует идентификатор для своего значения.Дабл это примитив.

0 голосов
/ 27 марта 2012

В этом ответе рассказывается, как сохранить число с плавающей запятой в Core Data. Вот это для двоих

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