ошибка iphone Core Data Unresolved при сохранении

Я соглашаюсь с сообщениями, в которых говорится, что об этом сообщают много путей и не является важной метрикой. Посмотрите этот ever-hear-of-developers-getting-paid-per-line-of-code.

169
задан BoltClock 5 June 2012 в 12:50
поделиться

2 ответа

Это означает, что ' Обязательному свойству sa присвоено значение nil. Либо в вашей * .xcodatamodel отметьте поле «optional», либо при сохранении в managedObjectContext убедитесь, что ваши свойства заполнены.

Если вы получаете дальнейшие ошибки после изменения кода в соответствии с двумя требованиями, попробуйте очистить свою сборку и удалите приложение со своего iPhone Simulator / устройства iPhone. Изменение вашей модели может конфликтовать с реализацией старой модели.

Изменить:

Я почти забыл, вот все коды ошибок, которые выдает Core Data: Если после изменения кода в соответствии с двумя требованиями возникают дополнительные ошибки, попробуйте очистить сборку и удалить приложение с iPhone Simulator / iPhone. Изменение вашей модели может конфликтовать с реализацией старой модели.

Изменить:

Я почти забыл, вот все коды ошибок, которые выдает Core Data: Если после изменения кода в соответствии с двумя требованиями возникают дополнительные ошибки, попробуйте очистить свою сборку и удалить приложение со своего iPhone Simulator / устройства iPhone. Изменение вашей модели может конфликтовать с реализацией старой модели.

Изменить:

Я почти забыл, вот все коды ошибок, которые выдает Core Data: Справочник по константам основных данных Раньше у меня были проблемы с этим, и я понял, что снял отметку с правильного необязательного поля. Такая проблема с обнаружением проблемы. Удачи.

295
ответ дан 23 November 2019 в 20:49
поделиться

Я сам некоторое время боролся с этим. Настоящая проблема здесь в том, что имеющаяся у вас отладка не показывает вам, в чем проблема. Причина в том, что CoreData помещает массив объектов NSError на «верхний уровень». Объект NSError, который он возвращает, если существует более одной проблемы (вот почему вы видите ошибку 1560, которая указывает на несколько проблем, и массив ошибок 1570s). Похоже, что у CoreData есть несколько ключей, которые он использует для хранения информации в возвращаемой ошибке, если есть проблема, которая предоставит вам более полезную информацию (например, объект, на котором произошла ошибка, связь / атрибут, который отсутствовал, и т. Д. ). Ключи, которые вы используете для проверки словаря userInfo, можно найти в справочной документации здесь .

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

    NSError* error;
    if(![[survey managedObjectContext] save:&error]) {
        NSLog(@"Failed to save to data store: %@", [error localizedDescription]);
        NSArray* detailedErrors = [[error userInfo] objectForKey:NSDetailedErrorsKey];
        if(detailedErrors != nil && [detailedErrors count] > 0) {
            for(NSError* detailedError in detailedErrors) {
                NSLog(@"  DetailedError: %@", [detailedError userInfo]);
            }
        }
        else {
            NSLog(@"  %@", [error userInfo]);
        }
    }

Будет произведен вывод, который сообщит вам, какие поля отсутствуют, что значительно упрощает решение проблемы.

что указывает на множественные проблемы и массив ошибок 1570s). Похоже, что у CoreData есть несколько ключей, которые он использует для хранения информации в возвращаемой ошибке, если есть проблема, которая предоставит вам более полезную информацию (например, объект, на котором произошла ошибка, связь / атрибут, который отсутствовал, и т. Д. ). Ключи, которые вы используете для проверки словаря userInfo, можно найти в справочной документации здесь .

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

    NSError* error;
    if(![[survey managedObjectContext] save:&error]) {
        NSLog(@"Failed to save to data store: %@", [error localizedDescription]);
        NSArray* detailedErrors = [[error userInfo] objectForKey:NSDetailedErrorsKey];
        if(detailedErrors != nil && [detailedErrors count] > 0) {
            for(NSError* detailedError in detailedErrors) {
                NSLog(@"  DetailedError: %@", [detailedError userInfo]);
            }
        }
        else {
            NSLog(@"  %@", [error userInfo]);
        }
    }

Будет произведен вывод, который сообщит вам, какие поля отсутствуют, что значительно облегчит решение проблемы.

что указывает на множественные проблемы и массив ошибок 1570s). Похоже, что у CoreData есть несколько ключей, которые он использует для хранения информации в возвращаемой ошибке, если есть проблема, которая предоставит вам более полезную информацию (например, объект, на котором произошла ошибка, связь / атрибут, который отсутствовал, и т. Д. ). Ключи, которые вы используете для проверки словаря userInfo, можно найти в справочной документации здесь .

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

    NSError* error;
    if(![[survey managedObjectContext] save:&error]) {
        NSLog(@"Failed to save to data store: %@", [error localizedDescription]);
        NSArray* detailedErrors = [[error userInfo] objectForKey:NSDetailedErrorsKey];
        if(detailedErrors != nil && [detailedErrors count] > 0) {
            for(NSError* detailedError in detailedErrors) {
                NSLog(@"  DetailedError: %@", [detailedError userInfo]);
            }
        }
        else {
            NSLog(@"  %@", [error userInfo]);
        }
    }

Будет произведен вывод, который сообщит вам, какие поля отсутствуют, что значительно облегчит решение проблемы.

Похоже, что у CoreData есть несколько ключей, которые он использует для хранения информации в возвращаемой ошибке, если есть проблема, которая предоставит вам более полезную информацию (например, объект, на котором произошла ошибка, связь / атрибут, который отсутствовал, и т. Д. ). Ключи, которые вы используете для проверки словаря userInfo, можно найти в справочной документации здесь .

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

    NSError* error;
    if(![[survey managedObjectContext] save:&error]) {
        NSLog(@"Failed to save to data store: %@", [error localizedDescription]);
        NSArray* detailedErrors = [[error userInfo] objectForKey:NSDetailedErrorsKey];
        if(detailedErrors != nil && [detailedErrors count] > 0) {
            for(NSError* detailedError in detailedErrors) {
                NSLog(@"  DetailedError: %@", [detailedError userInfo]);
            }
        }
        else {
            NSLog(@"  %@", [error userInfo]);
        }
    }

Будет произведен вывод, который сообщит вам, какие поля отсутствуют, что значительно упрощает решение проблемы.

Похоже, что у CoreData есть несколько ключей, которые он использует для хранения информации в возвращаемой ошибке, если есть проблема, которая предоставит вам более полезную информацию (например, объект, на котором произошла ошибка, связь / атрибут, который отсутствовал, и т. Д. ). Ключи, которые вы используете для проверки словаря userInfo, можно найти в справочной документации здесь .

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

    NSError* error;
    if(![[survey managedObjectContext] save:&error]) {
        NSLog(@"Failed to save to data store: %@", [error localizedDescription]);
        NSArray* detailedErrors = [[error userInfo] objectForKey:NSDetailedErrorsKey];
        if(detailedErrors != nil && [detailedErrors count] > 0) {
            for(NSError* detailedError in detailedErrors) {
                NSLog(@"  DetailedError: %@", [detailedError userInfo]);
            }
        }
        else {
            NSLog(@"  %@", [error userInfo]);
        }
    }

Будет произведен вывод, который сообщит вам, какие поля отсутствуют, что значительно упрощает решение проблемы.

233
ответ дан 23 November 2019 в 20:49
поделиться