Подтвердить что ты не робот

Ошибка сохранения данных ядра (NSValidationErrorKey, Cocoa ошибка 1570). Сохранение NSDate

Я получаю сообщение об ошибке с сохранением объекта данных Core в Xcode.

Xcode говорит, что ошибка в переменной NSDate 'datum', но я попробовал почти все. Ошибка:

2011-07-12 18:01:29.068 WeekLijstje[3205:207] Core Data Save Error
NSValidationErrorKey    datum
NSValidationErrorPredicate  (null)

NSValidationErrorObject
<DagLijst: 0x6e2fcd0> (entity: DagLijst; id: 0x6e2fd30 <x-coredata:///DagLijst/t99F423FC-AAE9-4692-9264-EF0FF7A020572> ; data: {
    Voedsel = nil;
    datum = nil;
    hoeveelheid = 0;
    punten = 0;
})
NSLocalizedDescription:The operation couldn’t be completed. (Cocoa error 1570.)

Маленький кодовый сниппет:

        DagLijst *newDaglijst = [NSEntityDescription insertNewObjectForEntityForName:@"DagLijst" inManagedObjectContext:self.managedObjectContext];

        NSDate *selDatum = [NSDate date];
        newDaglijst.punten = [NSNumber numberWithInteger:10];
        newDaglijst.hoeveelheid = [NSNumber numberWithInt:100];
        newDaglijst.Voedsel = geselecteerdVoedsel;
        newDaglijst.datum = selDatum;
        NSError *error = nil;
        if (![newDaglijst.managedObjectContext save:&error]) {
...

Также класс объекта DagLijst:

@interface DagLijst : NSManagedObject {
@private
}
@property (nonatomic, retain) NSDate * datum;
@property (nonatomic, retain) NSNumber * punten;
@property (nonatomic, retain) NSNumber * hoeveelheid;
@property (nonatomic, retain) Voedsel *Voedsel;

@end

Итак, вы можете видеть, что я поместил NSDate в переменную 'datum'. Но при выполнении я все равно получаю сообщение об ошибке.

4b9b3361

Ответ 1

Ошибка cocoa 1570 означает, что обязательные поля не заполняются. В этом случае у вас есть два атрибута nil: Voedsel и datum.

Я вижу в вашем коде:

newDaglijst.Voedsel = geselecteerdVoedsel;
newDaglijst.datum = selDatum;

Убедитесь, что geselecteerdVoedsel и selDatum не ноль или что они переопределены и заканчиваются, чтобы быть нулевым. Если они являются необязательными данными (но я так не думаю), определите их как необязательные в coredata.

Надеюсь на эту помощь,

Ответ 2

как сказал Майкл А. Проверьте, что ваши значения атрибутов не ноль. Есть две альтернативы, чтобы избавиться от этой ошибки. Случай 1: Если требуется 2 атрибута

Если 2 атрибута являются обязательными атрибутами, тогда обязательно проверять значения, которые вы передаете, не ноль, Иногда это может произойти. Если u хочет выйти из этой ошибки, u должен указывать значения по умолчанию для этих атрибутов в атрибутах инспектор вашего объекта в модели данных

Случай 2: Установите эти атрибуты в опцию в инспекторе атрибутов, установив флажок опционально.

Я тоже много дней пытался узнать об этой ошибке. Надеюсь, это поможет кому-то.

Ответ 3

У меня возникла эта проблема, когда я копировал объекты из другого файла xcdatamodeld. Они потеряли обратные атрибуты, поэтому в этом причина.

Ответ 4

Не связано с датой, но с ошибкой, я разделяю ее, поскольку у этого вопроса больше просмотров:

В моем случае я устанавливал свойство BOOL непосредственно как YES или NO, но вы должны использовать

Номер NSNumberWithBOOL

чтобы заставить его работать.

Ответ 5

Чтобы подтвердить ответ Михаэля, вы можете проверить свои свойства сущности в инспекторе. Один из ваших предметов может быть случайно сочтен необязательным или нет. Или, если вы похожи на меня, ваше "Правило удаления" могло быть установлено на "Обнулить", что сделало мое свойство отношения сущностей Nil во время выполнения. Поскольку мой объект, который должен быть удален, имел отношение "один ко многим" с некоторыми другими объектами, он препятствовал удалению родительских объектов. Изменение на Cascade решило проблему.

Entity Inspector - Удалить правило

Ответ 6

Ваша регистрация будет выглядеть так:

Fatal error: 'try!' expression unexpectedly raised an error: 
Error Domain=NSCocoaErrorDomain Code=1560 "(null)" UserInfo={NSDetailedErrors=(
...

Это означает, что у вас есть незафиксированное изменение для одного (или более) свойства объекта, в котором вы сказали, что оно НЕ является необязательным, но вы оставили его необязательным.

Чтобы выяснить, какой сущности вам не удалось установить значение для свойства, поищите это в своем журнале:

UserInfo={NSValidationErrorObject=<YOURENTITYISHERE: ...>

Чтобы узнать недвижимость, ищите:

NSValidationErrorKey=YOURPROPERTYISHERE

Где-то в вашем коде вы забыли установить значение для этого свойства для данного объекта.