У меня есть объект, называемый Core Data
Статуса с двумя атрибутами savedMessageID в Integer32 и savedMessageText как String.Сложность написания числового значения обратно в Core Data
У меня есть строка, хранящаяся в базе данных SQL, которую приложение загружает при запуске. Строка из базы данных разбивается на две части ID и текст:
NSInteger *newMessageID = [the_ID_as_a_string integerValue];
NSString *newMessageText = the_message_as_a_string;
Затем я прочитал Ядро данных записи и сравнения идентификаторов, чтобы увидеть, если произошло изменение. Если загруженный идентификатор больше, чем сохраненный идентификатор, отображается новое сообщение. Пока это работает.
Затем я попытаюсь написать обратно Основные данные с новым загруженным ID. Вот проблема ... много говорили здесь уже я знаю:
NSEntityDescription *entitydesc = [NSEntityDescription entityForName:@"Status" inManagedObjectContext:context];
NSManagedObject *updatedStatus = [[NSManagedObject alloc]initWithEntity:entitydesc insertIntoManagedObjectContext:context];
[updatedStatus setValue:newMessageID forKey:@"savedMessageID"]; //**error line**
[updatedStatus setValue:newMessageText forKey:@"savedMessageText"];
NSError *error;
[context save:&error];
Кажется, я не могу писать обратно в NSInteger
обратно в Core Data
. Я пробовал писать NSNumber, int и т. Д., Но все эти проблемы с флагом. Любые идеи, как я должен это делать?
** Ошибка я получаю * неявное преобразование без Objective-C указатель на NSInteger * '(он же' INT «) в 'ид' отвергается с ARC
Какова фактическая ошибка, которую вы получаете? –
NSInteger - это всего лишь тип int (работает в арсенале LP64), поэтому если вы передали это, как Core Data может интерпретировать его как нечто иное, чем адрес NSNumber? вот как это работает ... какая ошибка вы получаете, сохраняет сбой, или вы получаете значение, которого вы не ожидаете, когда читаете из другого контекста? –
Ошибка: неявное преобразование указателя не-Objective-C в NSInteger * '(aka' int * ') в' id 'запрещено ARC – RGriffiths