Ошибка сохранения основных данных (NSValidationErrorKey, ошибка Какао 1570) при сохранении NSDate - PullRequest
50 голосов
/ 12 июля 2011

Я получаю ошибку при сохранении в объект данных 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'. Но при выполнении я все еще получаю ошибку.

Ответы [ 6 ]

151 голосов
/ 06 сентября 2011

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

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

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

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

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

3 голосов
/ 13 ноября 2014

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

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

Случай 2: Установите эти атрибуты на факультативные в инспекторе атрибутов, установив флажок необязательного.слишком много дней пытался понять эту ошибку.Надеюсь, это кому-нибудь поможет.

1 голос
/ 19 января 2019

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

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

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

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

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

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

NSValidationErrorKey=YOURPROPERTYISHERE

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

0 голосов
/ 30 мая 2018

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

Инспектор сущностей - Правило удаления

0 голосов
/ 10 апреля 2016

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

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

NSNumber numberWithBOOL

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

0 голосов
/ 08 декабря 2013

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

...